应用场景:
应用所取的结果集中需要嵌入别的SQL的结果集。
<resultMap type="com.kevin.wallet.dto.CardsDetailResponse" id="cardsDetailResponse">
<result property="walletID" column="wallet_id"/>
<result property="totalAmount" column="totalAmount"/>
<result property="pageNumber" column=""/>
<result property="totalNumber" column="totalNumber"/>
[color=red]<association property="bailianAmount" column="{id=WALLET_ID}" select="getBailianAmount" />
<association property="okAmount" column="{id=WALLET_ID}" select="okAmount" />[/color]
[color=yellow]<collection property="cards" ofType="com.kevin.wallet.dto.ListCardInforResponse" >
<result property="cardNo" column="CARD_ID"/>
<result property="cardName" column="CARD_NAME"/>
<result property="balanceValue" column="BALANCE_VALUE"/>
<result property="validateTill" column="FROZEN_AT"/>
<result property="cardType" column="TYPE"/>
<result property="isForbidden" column="IS_FORBIDDEN"/>
<result property="alias" column="CARD_ALIAS"/>
<result property="status" column="STATUS"/>
<result property="order" column="CARD_ORDER"/>
</collection>[/color]
</resultMap>
<select id="getBailianAmount" parameterType="java.util.Map" resultType="java.math.BigDecimal">
SELECT
SUM(BALANCE_VALUE) as BAILIANAMOUNT
FROM(
SELECT
*
FROM
AVALIABLE_MEMBER_CARD member
WHERE
member.WALLET_ID = [color=red]#{id}[/color]
UNION
SELECT
*
FROM
AVALIABLE_PRODUCT_CARD product
where
product.WALLET_ID = [color=red] #{id}[/color]
)where TYPE=1 or TYPE=3
GROUP BY WALLET_ID
</select>
association 是对应数据库中一对一的关系,它会将getBailianAmount sql语句的返回值赋给bailianAmount这个属性。column这个属性用于设置getBailianAmount sql语句的传入参数。
column="{id=WALLET_ID}" 意思是将WALLET_ID列作为getBailianAmount sql语句的参数,id对应map的key, sql语句通过#{id}来获取该key的值。
分享到:
相关推荐
1. 动态 SQL:Mybatis 的动态 SQL 功能是高级映射查询的一大亮点。通过 `<if>`, `<choose>`, `<when>`, `<otherwise>`, `<where>`, `<foreach>` 等标签,开发者可以动态地生成 SQL 语句,根据不同的条件拼接 WHERE ...
MyBatis是一个强大的Java持久层框架,它允许开发者将SQL语句与Java代码分离,提供了一种灵活的方式来...在实践中,不断探索和理解MyBatis的其他高级功能,如动态SQL、缓存机制等,将有助于你成为更出色的Java开发者。
总之,MyBatis的高级映射功能为处理多对多查询提供了强大的工具。通过合理配置映射文件,编写适当的SQL查询,以及利用结果映射和缓存策略,开发者可以有效地管理多对多关联数据,提升应用程序的效率和可维护性。在...
【标题】"MyBatis高级查询+JFreeChart热点"是一个综合的学习项目,它涵盖了数据库操作和数据可视化两个重要领域。MyBatis是Java开发中常用的一个持久层框架,而JFreeChart则是一个用于创建高质量图表的库。下面将...
除此之外,MyBatisPlus还提供了例如填充实体类、主键自动生成、多表关联查询等高级功能。这些特性极大地提升了开发效率,使得开发者可以更加专注于业务逻辑,而非数据库操作的细节。 总结来说,“mybatis高级.rar”...
Mybatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。与传统的Hibernate等全自动化ORM框架不同,Mybatis更加灵活,允许开发者直接编写SQL,更好地控制SQL执行性能。 在Mybatis逆向工程...
在处理大量数据时,分页功能是必不可少的。MyBatis 原生支持分页,但是它通常依赖于数据库特定的 SQL 语法。为了提高代码的可维护性和可移植性,我们可以通过编写自定义分页插件来实现更灵活的分页逻辑。本文将详细...
MyBatis提供了一种插件机制,可以对Executor、StatementHandler、ParameterHandler、ResultSetHandler四个接口进行拦截,实现如日志、性能分析等功能。 12. **MyBatis的最佳实践** - 使用MyBatis Generator自动...
【标题】:“03 mybatis高级(3) 1” 【描述】:“1. SqlSessionFactoryBean源码分析 2. MapperFactoryBean源码分析 3. MapperScannerConfigurer源码分析” 【部分内容】:本课程主要讲解MyBatis的高级特性,包括...
【标题】:“03 mybatis高级(3) 2” 【描述】:“1. SqlSessionFactoryBean源码分析 2. MapperFactoryBean源码分析 3. MapperScannerConfigurer源码分析” 【部分内容】:略 在深入探讨MyBatis高级主题时,我们...
《Mybatis高级技术详解》 在讲解Mybatis的高级特性之前,我们首先需要理解什么是真实对象和代理对象。真实对象是指程序中实际处理业务逻辑的对象,而代理对象则是用来间接访问真实对象的一种机制,它在真实对象和...
《Mybatis高级进阶》教程主要探讨了Mybatis框架中的高级特性和设计模式的应用,以及如何深入理解并分析其源码。以下是对其中关键知识点的详细说明: **代理模式**: 代理模式是一种设计模式,它允许我们在不改变...
在MyBatis的高级特性中,我们关注的是其架构设计、设计模式的运用以及源码分析。 首先,MyBatis的整体架构分为三个层次:接口层、核心处理层和基础支撑层。接口层是用户直接交互的部分,包括了Mapper接口和...
**MyBatis** 是一个优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。在登录功能中,MyBatis会处理与数据库的交互,比如验证用户名和密码...
【标题】"mybatis的高级应用共6页.pdf.zip" 提供的是关于MyBatis框架深入使用的教程,...总的来说,这个压缩文件是MyBatis高级用户的宝贵资源,可以帮助开发者更好地掌握MyBatis,并在实际项目中发挥出它的强大功能。
在这个“mybatis基础分页,高级查询”项目中,我们将深入探讨 MyBatis 如何实现高效且复杂的查询以及分页功能。 首先,基础部分包括了 MyBatis 的基本配置和映射文件。MyBatis 的配置文件(mybatis-config.xml)...
MyBatis 提供了强大的动态 SQL 功能,允许我们在 SQL 查询中使用条件判断。这在处理复杂的关联查询时非常有用,可以根据业务需求选择性地加载关联数据,避免了“N+1”问题。 4. **源码解析** 当 MyBatis 执行查询...
在MyBatis的高级部分,我们可以深入探讨一些核心特性和高级用法,帮助开发者更好地驾驭这个框架,提升开发效率和代码质量。 1. **Mapper接口和XML配置**:MyBatis允许我们定义Mapper接口,通过注解或XML文件来编写...