Mapper代理开发
Mapper代理开发的概念
之前我们写代码是基本的使用方式,它也存在硬编码的问题(耦合度太高):如下
//执行sql list<User>users = sqlSession.selectList("test.selectAll"); System.out.println(users);
这里调用selectList()方法传递参数是映射配置文件中的namespace.id值。这样写也不便于后期的维护。如果使用Mapper代理方式如下,则可以降低耦合度
//3.获取接口代理对象 UserMapper userMapper = SqlSession.getMapper(UserMapper.class); //4.执行方法,其实就是执行sql语句 List<User>users=userMapper.selectAll();
通过上面的描述可以看出Mapper代理方式的目的:
降低了耦合度
简化后期执行SQL
在MyBatis官网也是推荐使用Mapper代理方式。
使用Mapper代理要求
使用Mapper代理方式,必须满足以下要求:
定义与SQL映射文件同名的Mapper接口,并且将Mapper接口和SQL映射文件放置在同一目录下。如下图
设置SQL映射文件的namespace属性为Mapper接口全限定名
<!--
namespace:名称空间,必须是对应接口的全限定名
-->
<mapper namespace="com.itheima.mapper.UserMapper">
在Mapper接口中定义方法,方法名就是SQL映射文件中sql语句的id,并保持参数类型和返回值类型一致