Mapper代理开发

文章介绍了如何通过Mapper代理开发解决硬编码问题,主要包括创建与映射文件同名的接口,设置接口的名称空间为XML的全限定名,定义接口中的抽象方法,以及在main方法中通过SqlSession获取接口代理对象执行SQL。这种方法使得方法名与XML中的SQLID对应,简化了代码维护。
摘要由CSDN通过智能技术生成

什么是Mapper代理开发?

在上一文章中我们提到,创建配置文件UserMapper。在main方法中,通过空间名称+sql的ID来获取配置文件需要执行的sql语句。

这样仍然会出现硬编码问题,一旦空间名称和sql语句太多,我们很难一一对应的找到所需要的语句,这样的会对后期维护增加成本。

所以我们采取Mapper代理开发的方法进行sql语句的执行。

 

1、创建和映射文件名相同的接口并且放在同一个目录下

需要注意的是,我们不可以直接变动配置文件的目录,要想将xml配置文件放在同一目录下,我们需要在配置文件包下创建同名目录,将配置文件移动进去。

请注意:次路径需要用“/”来表示目录层级,不可以使用“.” 

 2、设置UserMapper的名称空间为Mapper接口的全限定名。

即<mapper namesapce="XXXXX">

<!--
    namespace:名称空间
-->

<mapper namespace="com.tsj.mapper.UserMapper">

    <!-- id是注解语句的唯一标识,同时resulType是返回值的数据类型-->
    <select id="selectAll" resultType="com.tsj.pojo.user">
        select * from tb_user;
    </select>

</mapper>

3、在接口中定义抽象方法

方法名就是sql语句中的id,方法的参数类型和sql语句的返回值类型保持一致。

package com.tsj.pojo.mapper;

import com.tsj.pojo.user;

import java.util.List;

public interface UserMapper {

    //返回list集合,可以查询到很多个user对象。
    //如果想要查询一个对象,那么返回值也可以是一个user
    List<user> selectAll ();
}

4、main方法里编码实现sql

    //3.1获取UserMapper接口的代理对象
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        List<user> users = mapper.selectAll();

        System.out.println(users);

代码大概执行流程:

1、获取sqlsession对象

2、通过sqlsession获取接口的代理对象

3、在当前目录下有一个同名的映射文件,找到了同名的xml中的sql语句

4、使用mapper代理调用接口中的方法,每一个方法名就对应xml中sql语句的id,接着就可以获取对应的sql语句了。

5、根据接口中方法的参数,来确定返回值。

其实在底层执行的依然是sqlSession.selectList()。

    <mappers>
        <!--Mapper映射文件-->
        <!--mapper resource="com/tsj/mapper/UserMapper.xml"/-->
        
        <!-- Mapper代理方式-->
        <package name="com.tsj.mapper"/>
    </mappers>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值