说明:前面都是利用session的方法: selectOne()/selectList()/selectMap()/delete()/update()/insert()等方法对数据库操作的,现在改用接口绑定映射文件,进行CRUD操作。
1.创建mapper接口文件
/** * 这个接口用于与对应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); }
2.创建对应的xml文件
<!--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>
2.创建接口对象实例
//在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()方式。
- 通过接口绑定映射文件 --开发中推荐使用这种(比session中提供的方法更方便)