Mapper代理的开发

Mapper代理的开发

目的:

// 执行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();

实现步骤

  1. 定义与SQL映射文件同名的Mapper接口,并且将Mapper接口和SQL映射文件放置在同一目录下
  2. 设置SQL映射文件的namespace属性为Mapper接口全限定名
  3. 在Mapper接口中定义方法,方法名就是SQL映射文件中sql语句的id,并保持参数类型和返回值类型一致
  4. 编码
    1. 通过SqlSession的getMapper方法获取Mapper接口的代理对象
    2. 调用对应方法完成sql的执行

细节:如果Mapper接口名称和SQL映射文件名称相同,并在同一目录下,则可以使用包扫描的方式简化SQL映射文件的加载

<mappers>
    <!--加载sql的映射文件-->
    <!--<mapper resource="com/itheima/mapper/UserMapper.xml">-->
    <package name="com.itheima.mapper"/>
</mappers>