1、引入
1.1、问题
至此我们已经实现了通过MyBatis完成对数据的增删改查操作,但是认真思考,还是有些问题:
使用SqlSession来去操作数据的时候,需要给定statementId,比如说在做更新操作的时候,session.update(cn.test.mapper.updateById,employee),需要写死在Java代码中,不方便修改。我们更习惯的是每个实体都会有对应的Dao接口,并且直接使用Dao接口中提供的方法。1.2、解决办法
基于以上两点原因,MyBatis是否已经提供了解决方案呢?答案是必须的,那就是接口代理。
在使用的时候需要注意点两点:
只编写实体对应的Dao接口即可,不必编写具体的Dao实现类要想使用接口代理,必须要满足MyBatis的规范约定1.3、接口代理的约定规范
开发人员只需要写Dao接口(通俗叫法叫mapper接口,其实mapper接口也就是Dao接口,本质一样,说法不同)使用代理方法开发的时候,需要遵循一定的开发规范只有接口是不行的,还需要相应的实现类,所以程序员还需要编写相应的mapper.xml映射文件(在这里,可以简单的理解成mapper.xml映射文件就是该mapper接口的实现类)2、使用resource属性加载单个Mapper映射文件
2.1、步骤一:Mapper接口
2.2、步骤二:映射文件
刚刚提到过的,要想使用接口代理的方式,则必须要满足一定的规范,这个规范如下(满足4点):
在mapper.xml中namespace的值等于mapper接口的全路径mapper接口中的方法名和mapper.xml中statement的id必须一致mapper接口中的方法输入参数类型和mapper.xml中statement的parameterType指定的类型一致mapper接口中的方法返回值类型和mapper.xml中statement的resultType指定的类型一致
2.3、编写主配置文件
将编写好的mapper映射文件添加到mybatis-config.xml文件中。