Mabatis pojo学习日记(1:1方式)

联表查询时,如果一个实体类A中某个属性为另一个实体类B的对象b,resultType为A时,显示出来的A的属性值中,b的属性值为空。resultType为map时,返回的数据为联表查询结果中所有列(两表重复字段会被覆盖)的值。

实例 

@Data
public class User {
  private String uid;
  private String name;

  private Card card;
}
@Data
public class Card {
  private String aid;
  private String uid;
}

 1.当UserMapper.xml中返回值为user时,测试类、数据库查询结果及显示如下:

  @Test
  void test01() {
    List<User> users = userMapper.queryUser();
    for (User user:users
         ) {
      System.out.println(user);
    }
  }
    <select id="queryUser" resultType="user">
        select * from user left join card on user.uid = card.uid
    </select>

可以看到返回的User中card属性为空

2.当UserMapper.xml中返回值为map时,测试类、数据库查询结果及显示如下:

@Test
  void test02(){
    List<Map<String, String>> maps = userMapper.queryUser();
    for (Map<String,String> map:maps
         ) {
      System.out.println(map);
    }
  }
    <select id="queryUser" resultType="map">
        select * from user left join card on user.uid = card.uid
    </select>

可以看到数据库查询出的结果都显示出来了,但是不是以User对象的形式展示

3.如果希望以User形式展示数据,同时card里面也不为空,这时候就要用到resultMap

个人理解:resultMap实质上就是定义一种新的数据类型,在resultMap中通过对每一个属性的定义实现返回结果中的对应数据,同时返回值类型以resultMap中的type为准

@Test
  void test01() {
    List<User> users = userMapper.queryUser();
    for (User user:users
         ) {
      System.out.println(user);
    }
  }
<!--    定义ResultMap type:主查表的类型(返回值类型也以此为准)   -->
    <resultMap id="userMap" type="user">
<!--    描述主查表信息  property:实体类属性名 column:查询结果集的列名    -->
        <id property="uid" column="uid"></id>
        <result property="name" column="name"></result>
<!--    association:描述次查表信息(主查表中有以次查表对象为属性)
        property:映射实体类的字段或属性
        javaType:完整Java类名或别名    -->
        <association property="card" javaType="card">
            <id property="aid" column="aid"></id>
            <result property="uid" column="uid"></result>
        </association>
    </resultMap>
    
    <select id="queryUser" resultMap="userMap">
        select * from user left join card on user.uid = card.uid
    </select>

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值