Mapper代理的开发
Mapper代理的开发
目的:
- 解决原生方式中的硬编码
- 简化后期执行SQL
// 执行sql,硬编码,不易于维护
List<User> users = sqlSession.selectList("test.selectAll");
System.out.println(users);
// Mapper代理实现
// 获取接口代理对象
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
// 执行方法,其实就是执行sql语句
List<User> users = userMapper.selectAll();
实现步骤
- 定义与SQL映射文件同名的Mapper接口,并且将Mapper接口和SQL映射文件放置在同一目录下
- 设置SQL映射文件的namespace属性为Mapper接口全限定名
- 在Mapper接口中定义方法,方法名就是SQL映射文件中sql语句的id,并保持参数类型和返回值类型一致
- 编码
- 通过SqlSession的getMapper方法获取Mapper接口的代理对象
- 调用对应方法完成sql的执行
细节:如果Mapper接口名称和SQL映射文件名称相同,并在同一目录下,则可以使用包扫描的方式简化SQL映射文件的加载
<mappers>
<!--加载sql的映射文件-->
<!--<mapper resource="com/itheima/mapper/UserMapper.xml">-->
<package name="com.itheima.mapper"/>
</mappers>