`
g0314
  • 浏览: 2476 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

Mybatis查询结果列表嵌套列表

 
阅读更多

笔记:

使用mybatis查询一列表,结果为List<Map<String,Object>>,列表内Map又包含一个列表.

使用mybatis查询的话,大致就是下边这个样子。

注:结果中的fId、ids需唯一

 

<!-- 主查询 -->
<select id="name" parameterType="Map" resultMap="ResultMap">
      select t.id as `id`,
             t.fId as `fId`,
             t.id as `ids`,
             t.name as `name`
       from test t
</select>

<!-- 封装查询结果 -->
<resultMap id="ResultMap" type="Map" >
   <collection property="list1" column="fId" javaType="ArrayList" select="name1"/> 
   <collection property="list2" column="ids" javaType="ArrayList" select="name2"/> 
</resultMap>

<!-- 子查询列表1 -->
<select id="name1" parameterType="String" resultType="Map">
       select t.id as `id`,
              t.name as `name`
       from test1 t
       <trim prefix="WHERE" prefixOverrides="AND|OR">
            <if test="value != null">
                  and t.fId = #{value}
            </if>
       </trim>
</select>

<!-- 子查询列表2 -->
  <select id="name2" parameterType="String" resultType="Map">
       select t.id as `id`,
              t.name as `name`
       from test2 t
       <trim prefix="WHERE" prefixOverrides="AND|OR">
            <if test="value != null">
                  and t.id = #{value}
            </if>
       </trim>
</select>

 

 查询结果为:List-->

                           Map-->

                                      id

                                      list1-->

                                                 Map-->

                                                            id

                                                            name

                                      list2-->

                                                 Map-->

                                                            id

                                                            name

                                      name

                           Map-->....

                                      ....

分享到:
评论

相关推荐

    Mybatis基于注解实现增删查改和多参数列表查询

    在本文中,我们将深入探讨如何利用Mybatis的注解实现增删查改(CRUD)操作以及多参数列表查询。 1. **增(Create)**: 在Mybatis中,我们可以使用`@Insert`注解来插入数据。例如: ```java @Insert("INSERT INTO ...

    mybatis 一对多的查询,包含 连接查询 嵌套查询 及日志处理

    在处理一对多关系时,MyBatis 提供了多种方式,包括连接查询和嵌套查询,来帮助开发者高效地进行数据操作。同时,MyBatis 还提供了日志处理功能,便于调试和记录数据库操作,提升开发效率。 1. **一对多关联查询** ...

    mybatis collection 多条件查询的实现方法

    `BaseVoResultMap`是`BaseResultMap`的扩展,它在`collection`标签中定义了一个名为`userMessageDetailList`的属性,这个属性表示主查询结果集`UserMessage`中的一个列表,列表的元素类型是`UserMessageDetail`。...

    深入理解mybatis原理

    2. 执行SQL语句并封装查询结果 3. 集成List结果列表 动态SQL语句的构建是MyBatis的特色功能之一。MyBatis能够通过传入的参数动态生成SQL语句,这是通过OGNL(Object-Graph Navigation Language)表达式语言实现的。...

    Mybatis简单关系查询案例

    本案例主要探讨的是Mybatis中的简单关系查询,包括两种常见的处理方式:嵌套查询和嵌套结果,以及多对一查询的懒加载配置。 首先,我们来看嵌套查询,这是初学者在处理关联查询时最直观的方式。当我们在映射文件中...

    mybatis多表查询.zip

    4. **自定义查询(Result Maps with Auto Mapping)**:MyBatis还提供了自动映射功能,可以自动将查询结果中的列名映射到Java对象的属性上。如果列名和属性名完全匹配,甚至无需编写任何映射代码。 5. **动态SQL**...

    MyBatis3.3

    3. **参数映射和结果映射**:MyBatis的强项在于它可以自动映射参数和结果集,无论是简单的POJO属性还是复杂的嵌套结构,都可以轻松处理。 4. **动态SQL**:MyBatis的动态SQL功能使得开发者可以在XML映射文件中编写...

    mybatis之综合查询(1对1 1对多 多对多)

    然后在MyBatis的Mapper接口中定义对应的方法,如单个对象的查询、列表查询、插入、更新和删除。接着,编写XML映射文件,配置SQL语句和关系映射。最后,编写Service和Controller层的代码,调用Mapper接口进行业务逻辑...

    mybatis帮助文档-中文

    - 一级缓存:SqlSession级别的缓存,同一个SqlSession内的相同查询会复用结果。 - 二级缓存:全局缓存,跨SqlSession共享,需要在配置文件中开启并配置相关属性。 7. **MyBatis与Spring整合** - 使用Spring的...

    MyBatis关联映射代码

    2. 嵌套结果:当主表和子表的数据在同一查询结果集中时,MyBatis会根据ResultMap来解析并关联这些数据。这种方式适用于主表和子表数据在同一个SELECT语句中返回的情况。 以下是一个简单的例子,展示了如何在MyBatis...

    springboot-mybatis-custom-language-driver.zip

    在本项目"springboot-mybatis-custom-language-driver.zip"中,主要探讨了如何在SpringBoot集成MyBatis的环境中,自定义语言驱动以实现更灵活的SQL动态查询功能,特别是循环查询、IN查询以及if条件判断的动态SQL语句...

    Mybatis关联映射

    在MyBatis中,关联映射是一种处理复杂查询结果的重要技术。当查询的数据涉及多个表时,使用关联映射能够有效地组织这些数据,使其按照面向对象的方式进行展现。 #### 二、关联查询概述 **关联查询**指的是在SQL...

    Mybatis系列课程-一对一

    6. **Nested ResultMap**:在ResultMap中,可以定义嵌套的结果映射,使得复杂的查询结果能够正确映射到对象结构中。这种方式可以避免在业务逻辑层进行复杂的对象组装。 7. **自定义查询处理器(TypeHandler)**:...

    mybatis一对多性能优化demo

    在查询时,如果我们不进行优化,MyBatis默认会为每个User对象执行一条额外的SQL去获取对应的Order列表,这可能导致大量数据库访问,效率低下。为了优化,我们可以采取以下策略: 1. **延迟加载(Lazy Loading)**:...

    Mybatis生成pojo插件

    通常,这可以通过Eclipse的"Install New Software"功能完成,将插件的本地路径添加到更新站点列表,然后按照向导提示进行安装。确保在安装过程中遵循Eclipse的安全策略,避免安装未经验证的第三方插件。 安装完成后...

    Mybatis系列教程Mybatis复杂映射开发共6页.p

    1. **基础概念**:首先,会解释映射的概念,包括基本的ResultMap,它是Mybatis中用于描述如何将数据库查询结果映射到Java对象的核心元素。 2. **集合映射**:对于一对多或多对多关系,教程可能会讲解如何使用...

    MyBatis中文教程pdf

    MyBatis的高级映射功能可以处理复杂的查询结果集,比如多对一、一对多的情况。通过resultMap元素,可以定义SQL查询结果的返回值与Java对象属性的映射关系。resultMap还可以包含复杂的嵌套结果集,允许你创建复杂的...

    Mybatis复杂映射开发开源架构源码2021.pdf

    复杂映射开发是Mybatis框架中的一个重要部分,它支持将单个结果集映射到复杂类型的嵌套结构中。 首先,Mybatis的复杂映射通过自定义映射规则来实现,如XML配置文件中可以定义多种映射类型和行为。在自定义映射中,`...

    mybatis高级映射

    **小结**: 使用 `resultType` 进行一对一映射适用于查询结果和对象属性一一对应的情况;使用 `resultMap` 可以处理更复杂的映射逻辑,如嵌套对象。 **1.2 一对多映射** **需求**: 查询订单信息,并关联查询订单...

    MyBatis高级映射(一对多查询)

    在实际开发中,一对多查询常用于展示数据的详细信息,比如部门列表中显示每个部门的员工列表。通过MyBatis的一对多映射,可以轻松地将数据库中的关联数据转换为易于操作的Java对象。 总之,MyBatis的一对多映射...

Global site tag (gtag.js) - Google Analytics