专栏首页生如夏花的个人博客Mybatis高级查询(一):resultMap与resultType

Mybatis高级查询(一):resultMap与resultType

Mybatis高级查询(一)

在开始高级查询之前我们先来认识几个新的标签

resultMap与resultType

resultType:将查询结果按照sql列名pojo属性名一致性映射到pojo中

适用场合:较为简单的映射关系

但是如果pojo中没有包括查询出来的列名,就需要增加列名对应的属性才可以完成映射,如果没有查询结果的特殊要求建议使用resultType.

1)基本类型:resultType=基本类型。

2)List类型:resultType=list中元素的基本类型

3)Map类型:单条记录:resultType=map

​ 多条记录:resultType=Map中的value类型

***resultMap:***它可以将查询到的复杂数据(比如查询到几个表中的数据)映射到一个结果集中;需要单独定义resultMap,实现有点麻烦,如果对结果有特殊的需求,使用resultMap可以将关联查询映射pojo的属性中。

resultMap可以实现延迟加载,resultType不能实现延迟加载

一对一查询的时候使用association标签使主表的pojo中嵌套另一个表的pojo,实现关联映射

一对多查询的时候使用collection标签将关联查询信息映射到一个List集合中

2association与collection

在上一章的介绍中已经简单的了解过了assoction与collection的作用

association:

作用:将关联信息映射到哟个pojo对象中

适用场合:一个订单表中只有一个用户对象属性,可以使用该标签实现查询订单表的时候关联查询出订单的用户信息;

collection:

作用:将关联查询信息映射到一个list集合中。

适用场合:一个订单表对应多个订单详情表;查询一个订单表,可以使用该标签把结果映射到list集合中

这里我们可以通过resultMap的一些标签和字段来进一步的认识他

<!-- column不做任何的限制,可以为任意表的字段,而property必须为type定义的pojo属性-->
<resultMap id="唯一的标识" type="映射的pojo对象">
    <id column="表的主键字段或查询语句中的别名字段" property="映射pojo对象的主键属性" />
    <result column="表的一个字段(可以为任意表的一个字段)" property="映射到pojo对象的一个属性"/>
    <!--一对一查询-->
    <association property="pojo的一个对象属性" javaType="pojo关联的pojo对象">
    <id column="集合中pojo对象对应的表的主键字段"  property="集合中pojo对象的主键属性" />
        <result column="可以为任意表的字段"  property="集合中的pojo对象的属性" />  
    </association>
    <!--一对多查询-->
    <collection property="pojo的集合属性" ofType="集合中的pojo对象">
        <id column="集合中pojo对象对应的表的主键字段"  property="集合中pojo对象的主键属性" />
        <result column="可以为任意表的字段" property="集合中的pojo对象的属性" />  
    </collection>
</resultMap>

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • redis高可用解决方案(一):哨兵模式

    使用redis的分片可以满足redis内存的扩容,但是一旦有服务器宕机,那么整个redis都将无法使用

    许喜朝
  • ElementUi+Springboot 上传文件到阿里云oss

    许喜朝
  • centos系统下的redis安装

    许喜朝
  • 设计模式—–单一职责原则

    **对于设计原则的理解应该首先从它的动机入手,即遵循这个原则带来的好处是什么?对于SRP来讲,如果遵循“一个类应该有且只有一个变化的原因”是因,那么“任何一个变...

    对弈
  • 不雅曝光:Wi-Fi可能是你最薄弱的环节吗?

    想象一下,你花了一大笔钱让你的家庭物理方面安全,却发现你被从未闯入你家的小偷悄悄地抢劫了。你以为你已经建造了一座堡垒,但没有发现栅栏上的间隙成为你家对入侵者敞开...

    lucbunny
  • IC 圆桌派,第六场『中后端』复盘

    https://my.oschina.net/liyanqing/blog/2988998。

    老秃胖驴
  • BurpSuite使用之Intruder密码爆破模块

    攻击开始后弹出新的框,显示攻击过程,根据Length会发现正确的和错误的数值不一样,找到正确的点击查看响应体,登陆成功

    斑马
  • 爬了下知乎神回复,已笑趴~~~

    A: 这暗示了,在你连iPhone都买不起的时候,他就买了房子。 世界真是不公平呀!

    良月柒
  • LeetCode209.滑动窗口算法原理图解(Kotlin语言):长度最小的子数组

    给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 sum ≥ s 的长度最小的连续子数组。如果不存在符合条件的连续子数组,返回 0。

    一个会写诗的程序员
  • 如何更改 Linux 的 I/O 调度器

    Linux 的 I/O 调度器是一个以块式 I/O 访问存储卷的进程,有时也叫磁盘调度器。Linux I/O 调度器的工作机制是控制块设备的请求队列:确定队列中...

    Debian中国

扫码关注云+社区

领取腾讯云代金券