Mybatis框架的使用之四(resultMap的使用)

绝大多数情况下,一条完整的信息至少分别来自两张或以上的表,连表查询非常常见,这种情况下可以使用resultMap属性

1、使用resultMap实现简单结果映射:

user表:在这里插入图片描述

role表:
在这里插入图片描述

user表中的userRole是外键,对应role表中的id
需求:通过userName和userRole,查询到符合条件的用户和其RoleName
在这里,用户信息来自user表,roleName来自role表。我们采用封装对象的传参的方式进行查询。首先可以修改pojo的User类,添加一个userRoleName的String属性和相应的setter、getter方法

然后在mapper文件中新建一个select标签:

    <select id="getUserList" resultMap="userList" parameterType="User">
			select u.*,r.roleName from smbms_user AS u,smbms_role AS r where u.userName
			like CONCAT('%',#{
   userName},'%') AND  u.userRole = #{
   userRole}
			AND u.userRole = r.id
	</select>

这里没有使用resultType标签了,而是换成了resultMap,它的值由我们自定义。
然后,在刚刚编写完成select标签外,创建一个resultMap标签:

 <!--id与使用resultMap属性的标签值一致,type是返回类型-->
  <resultMap id="userList" type="User">
        <!--column是表的列名 property是查出来的字段值要赋给的实体对象的属性名称-->
        <!--意味着我们采用自定义的方式进行映射-->
        <result property="id" column="id"></result>
        <result property="userCode" column="userCode"></result>
        <result property="userName" column="userName"></result>
         <!--在这里把role表的roleName列的值赋给了User类的userRoleName属性-->
        <result property="userRoleName" column="roleName"></result>
    </resultMap>

接口方法没有什么新变化:

 List<User> getUserList(User user);

测试类:

public void getUserList() {
   
        SqlSession sqlSession = null;
        List<User> list;
        User u = new User();
        u.setUserName("赵");
        u.setUserRole(2);
        try {
   
            sqlSession = MyBatisUtils.getSQLSession();
            list = sqlSession.getMapper(UserMapper.class).getUserList(u);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值