010关联映射 之 基于嵌套select映射

本文详细介绍了MyBatis中的N-1和N-N映射。N-1映射适用于关联的select语句返回一条记录的情况,通过association标签或@One注解实现。N-N映射则涉及多条记录,需要使用collection标签或@Many注解,并指定javaType和ofType属性。文中强调了fetch属性在lazy和eager模式下的区别,并提供了最佳实践建议。
摘要由CSDN通过智能技术生成

N-1映射

N-1即 当关联的select语句返回的结果集只有一条记录

所谓关联映射,就是查询 A 表的数据,用一个java对象来映射,但是,这个java对象所需要的部分数据无法从 A 表中直接获得,要从 B 表中获取,当然,B 表获取的数据与 A 表相关联(一般为主从表的关系)。
关键思路:把无法直接获取的属性值另外拿出来分析,我们要从 B表 中另外查询数据用于填充这个属性,那么这个查询B表语句很显然要从A中提取某个数据,作为查询 B表 的依据(例如根据A表中的id,然后拿这个id值作为过滤条件,来查询B表)

基于Mapper.xml:

关键点:
我们已经知道,配置结果集映射时,普通属性直接为其制定column,property来完成 数据库列名 与 java对象属性名 之间的映射。
但是,有些数据并不能之间拿数据库列中数据来简单的填充java对象属性,这个时候不能简单的指定column,而是要另外关联一个select语句,根据这个select查询结果来填充这个特殊的属性。
所以程序中存在两个Mapper组件。
示例:

 <select id="queryAddress" resultMap="addressMap">
        select * from address where address_content regexp #{aa};
    </select>
    <select id="queryAddress2" resultMap="addressMap">
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值