Mybatis中通过接口绑定映射文件

说明:前面都是利用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中提供的方法更方便)