笔记:
使用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的注解实现增删查改(CRUD)操作以及多参数列表查询。 1. **增(Create)**: 在Mybatis中,我们可以使用`@Insert`注解来插入数据。例如: ```java @Insert("INSERT INTO ...
在处理一对多关系时,MyBatis 提供了多种方式,包括连接查询和嵌套查询,来帮助开发者高效地进行数据操作。同时,MyBatis 还提供了日志处理功能,便于调试和记录数据库操作,提升开发效率。 1. **一对多关联查询** ...
`BaseVoResultMap`是`BaseResultMap`的扩展,它在`collection`标签中定义了一个名为`userMessageDetailList`的属性,这个属性表示主查询结果集`UserMessage`中的一个列表,列表的元素类型是`UserMessageDetail`。...
2. 执行SQL语句并封装查询结果 3. 集成List结果列表 动态SQL语句的构建是MyBatis的特色功能之一。MyBatis能够通过传入的参数动态生成SQL语句,这是通过OGNL(Object-Graph Navigation Language)表达式语言实现的。...
本案例主要探讨的是Mybatis中的简单关系查询,包括两种常见的处理方式:嵌套查询和嵌套结果,以及多对一查询的懒加载配置。 首先,我们来看嵌套查询,这是初学者在处理关联查询时最直观的方式。当我们在映射文件中...
4. **自定义查询(Result Maps with Auto Mapping)**:MyBatis还提供了自动映射功能,可以自动将查询结果中的列名映射到Java对象的属性上。如果列名和属性名完全匹配,甚至无需编写任何映射代码。 5. **动态SQL**...
3. **参数映射和结果映射**:MyBatis的强项在于它可以自动映射参数和结果集,无论是简单的POJO属性还是复杂的嵌套结构,都可以轻松处理。 4. **动态SQL**:MyBatis的动态SQL功能使得开发者可以在XML映射文件中编写...
然后在MyBatis的Mapper接口中定义对应的方法,如单个对象的查询、列表查询、插入、更新和删除。接着,编写XML映射文件,配置SQL语句和关系映射。最后,编写Service和Controller层的代码,调用Mapper接口进行业务逻辑...
- 一级缓存:SqlSession级别的缓存,同一个SqlSession内的相同查询会复用结果。 - 二级缓存:全局缓存,跨SqlSession共享,需要在配置文件中开启并配置相关属性。 7. **MyBatis与Spring整合** - 使用Spring的...
2. 嵌套结果:当主表和子表的数据在同一查询结果集中时,MyBatis会根据ResultMap来解析并关联这些数据。这种方式适用于主表和子表数据在同一个SELECT语句中返回的情况。 以下是一个简单的例子,展示了如何在MyBatis...
在本项目"springboot-mybatis-custom-language-driver.zip"中,主要探讨了如何在SpringBoot集成MyBatis的环境中,自定义语言驱动以实现更灵活的SQL动态查询功能,特别是循环查询、IN查询以及if条件判断的动态SQL语句...
在MyBatis中,关联映射是一种处理复杂查询结果的重要技术。当查询的数据涉及多个表时,使用关联映射能够有效地组织这些数据,使其按照面向对象的方式进行展现。 #### 二、关联查询概述 **关联查询**指的是在SQL...
6. **Nested ResultMap**:在ResultMap中,可以定义嵌套的结果映射,使得复杂的查询结果能够正确映射到对象结构中。这种方式可以避免在业务逻辑层进行复杂的对象组装。 7. **自定义查询处理器(TypeHandler)**:...
在查询时,如果我们不进行优化,MyBatis默认会为每个User对象执行一条额外的SQL去获取对应的Order列表,这可能导致大量数据库访问,效率低下。为了优化,我们可以采取以下策略: 1. **延迟加载(Lazy Loading)**:...
通常,这可以通过Eclipse的"Install New Software"功能完成,将插件的本地路径添加到更新站点列表,然后按照向导提示进行安装。确保在安装过程中遵循Eclipse的安全策略,避免安装未经验证的第三方插件。 安装完成后...
1. **基础概念**:首先,会解释映射的概念,包括基本的ResultMap,它是Mybatis中用于描述如何将数据库查询结果映射到Java对象的核心元素。 2. **集合映射**:对于一对多或多对多关系,教程可能会讲解如何使用...
MyBatis的高级映射功能可以处理复杂的查询结果集,比如多对一、一对多的情况。通过resultMap元素,可以定义SQL查询结果的返回值与Java对象属性的映射关系。resultMap还可以包含复杂的嵌套结果集,允许你创建复杂的...
复杂映射开发是Mybatis框架中的一个重要部分,它支持将单个结果集映射到复杂类型的嵌套结构中。 首先,Mybatis的复杂映射通过自定义映射规则来实现,如XML配置文件中可以定义多种映射类型和行为。在自定义映射中,`...
**小结**: 使用 `resultType` 进行一对一映射适用于查询结果和对象属性一一对应的情况;使用 `resultMap` 可以处理更复杂的映射逻辑,如嵌套对象。 **1.2 一对多映射** **需求**: 查询订单信息,并关联查询订单...
在实际开发中,一对多查询常用于展示数据的详细信息,比如部门列表中显示每个部门的员工列表。通过MyBatis的一对多映射,可以轻松地将数据库中的关联数据转换为易于操作的Java对象。 总之,MyBatis的一对多映射...