使用RresultMap中collection做嵌套查询

简介: 注意:<collection>标签中的column:是要传递给select查询语句的参数,如果传递多个参数,格式为column= " {参数名1=表字段1,参数名2=表字段2}"

使用RresultMap中collection做嵌套查询



1.使用格式如下:


<collection column="传递给嵌套查询语句的字段参数"
      property="pojo对象中的集合属性" 
      ofType="集合属性中的pojo对象"
      select="嵌套的查询语句" > 
 </collection>


注意:<collection>标签中的column:是要传递给select查询语句的参数,如果传递多个参数,格式为column= " {参数名1=表字段1,参数名2=表字段2}" ;


2.实例


(2)实体类


@Data
public class SubjectVO implements Serializable {
    private static final long serialVersionUID = 1L;
    private String id;
    private String title;
    private Integer sort;
    private List<SubjectVO> children = new ArrayList<>();
}


(2)mapper.xml


<mapper namespace="com.atguigu.guli.service.edu.mapper.SubjectMapper">
    <resultMap id="nestedSubject" type="com.atguigu.guli.service.edu.entity.vo.SubjectVO">
        <id property="id" column="id"/>
        <result property="title" column="title"/>
        <result property="sort" column="sort"/>
        <collection column="id"
          property="children"   
          ofType="com.atguigu.guli.service.edu.entity.vo.SubjectVO"     
                    select="selectNestedListByParentId"/>
    </resultMap>
    <select id="selectNestedListByParentId" resultMap="nestedSubject">
        select id, sort, title
        from edu_subject
        where parent_id = #{parentId}
    </select>
</mapper>


相关文章
|
3月前
|
SQL XML Java
mybatis元素类型为 "resultMap" 的内容必须匹配 "(constructor?,id *,result*,association报错解决
mybatis元素类型为 "resultMap" 的内容必须匹配 "(constructor?,id *,result*,association报错解决
49 0
|
5月前
|
SQL 安全 Java
MyBatis动态语句且如何实现模糊查询及resultType与resultMap的区别---详细介绍
MyBatis动态语句且如何实现模糊查询及resultType与resultMap的区别---详细介绍
104 0
|
5月前
|
SQL Java 数据库连接
Mybatis使用collection标签实现一对多关联查询,返回结果集list中嵌套list
Mybatis使用collection标签实现一对多关联查询,返回结果集list中嵌套list
146 0
|
7月前
|
前端开发 Java 数据库连接
Mybatis ResultMap多表映射DTO
解决问题:n+1问题,之前我的习惯是拿到单表里面的数据,然后遍历,再拿到一个与其他表对应的逻辑上的外键,然后for循环去查找其他表的数据(原因是数据量小,没有在意,还有主要是不想建外键,你知道的,外键是很麻烦的,虽然有利于查询,但是增删改确实很让人头疼),这样做也能达到效果,但是效率低,访问数据库的次数也太多了,假设我查询出了1000条数据,我要用他里面的逻辑外键去查找其他表1000次,就意味着访问数据1000次,这样做还会遇到一些问题,若当前的逻辑外键查找在对应的表里面没有数据,就会抛出异常,从程序出错
57 1
|
7月前
|
SQL Java 数据库连接
【MyBatis】动态SQL > 重点:${...}和#{...}与resultMap和resultType的区别
【MyBatis】动态SQL > 重点:${...}和#{...}与resultMap和resultType的区别
88 0
|
Java 数据库连接 数据库
Mybatis ResultMap 结果集映射
可以看到密码全部为null 如何解决此问题呢? 可以使用Mybatis ResultMap 结果集映射:😊 resultMap 元素是 MyBatis 中最重要最强大的元素。它可以让你从 90% 的 JDBC ResultSets 数据提取代码中解放出来,并在一些情形下允许你进行一些 JDBC 不支持的操作。实际上,在为一些比如连接的复杂语句编写映射代码的时候,一份 resultMap 能够代替实现同等功能的数千行代码。ResultMap 的设计思想是,对简单的语句做到零配置,对于复杂一点的语句,只需要描述语句之间的关系就行了。
85 0
|
XML Java 数据库连接
MyBatis之ResultMap的association和collection标签详解(图文例子)
MyBatis之ResultMap的association和collection标签详解(图文例子)
368 0
MyBatis之ResultMap的association和collection标签详解(图文例子)
|
Java 数据库连接 数据库
Mybatis 强大的结果集映射器resultMap
1. 前言 resultMap 元素是 MyBatis 中最重要最强大的元素。它可以让你从 90% 的 JDBC ResultSets 数据提取代码中解放出来,并在一些情形下允许你进行一些 JDBC 不支持的操作。实际上,在为一些比如连接的复杂语句编写映射代码的时候,一份 resultMap 能够代替实现同等功能的数千行代码。ResultMap 的设计思想是,对简单的语句做到零配置,对于复杂一点的语句,只需要描述语句之间的关系就行了。 resultMap 可以将查询到的复杂数据,比如多张表的数据、一对一映射、一对多映射等复杂关系聚合到一个结果集当中。日常的业务开发通常都会和它打交道,今天就对
1942 0
|
SQL Java 数据库连接
MyBatis(九) resultMap的关联方式实现多表查询
MyBatis_resultMap 的关联方式实现多表查询(多对一)
MyBatis(九)   resultMap的关联方式实现多表查询
|
SQL Oracle 关系型数据库
MyBatis(十) resultMap的关联方式实现多表查询
MyBatis_resultMap的关联方式实现多表查询(一对多)以及通过 Auto-Mapping 实现多表查询
MyBatis(十)  resultMap的关联方式实现多表查询

热门文章

最新文章