说明:前面都是利用session的方法: selectOne()/selectList()/selectMap()/delete()/update()/insert()等方法对数据库操作的,现在改用接口绑定映射文件,进行CRUD操作。
/**
* 这个接口用于与对应xml文件关联
*/
public interface DeptMapper {
//根据deptno查询dept部门信息
public Dept getByDeptno(int deptno);
//通过Dept的对象查询
public Dept getByDept(Dept dept);
//通过Map集合查询对象
public Dept getByMap(Map<String,String> map);
}
<!--namespace:写与之对应的接口文件全路径名 让当前的sql映射文件与DeptMapper两个文件关联起来-->
<mapper namespace="com.mapper.DeptMapper">
<!-- id对应接口中的方法名 resultType用的是前面更改的别名-->
<select id="getByDeptno" resultType="Dept">
select * from dept where deptno = #{param1}
</select>
<select id="getByDept" resultType="Dept">
select * from dept where dname = #{dname}
</select>
<!--#{}里面要参考传入的map参数中key的值-->
<select id="getByMap" resultType="Dept">
select * from dept where loc = #{l}
</select>
</mapper>
//在session的基础上,利用反射创建接口对象实例,CRUD操作是由Mybatis框架完成
DeptMapper deptMapper = session.getMapper(DeptMapper.class);
//通过接口对象实例,获取方法,完成数据查询
//通过deptno查询部门信息Dept
@Test
public void getByDeptno(){
Dept dept = deptMapper.getByDeptno(10);
System.out.println(dept);
}
//通过Dept的对象查询
@Test
public void getByDept(){
Dept dept = new Dept();
dept.setDname("sales");
Dept sale = deptMapper.getByDept(dept);
System.out.println(sale);
}
//通过Map集合查询对象
@Test
public void getByMap(){
Map<String,String> map = new HashMap<>();
map.put("l","NEW YORK");
Dept dept = deptMapper.getByMap(map);
System.out.println(dept);
}
其余的DML操作与查询方式相同,数据可以通过三种方式传递:
? 基本数据类型、POJO对应的实体类、Map集合
获取参数的方式如上代码所示。
另:注意DML操作有事务提交和关闭,同过session.commit()/close()方式。
原文:https://www.cnblogs.com/soft-test/p/14503301.html