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

    技术2025-09-15  28

    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>
    Processed: 0.015, SQL: 9