MyBatis之多表查询

首先先谈谈resultTyperesultMap,其中resultType是一种返回类型,绝⼤数查询场景可以使⽤ resultType 进行返回,它的优点是使用方便,直接定义到某个实体类,如下代码所示:

而resultMap是返回字典映射,它的使用场景是:数据库中的字段名称和程序中的属性名不相同的情况,在多表查询中的一对一和一对多关系可以使用resultMap映射并查询数据。

在多表查询时,如果使⽤ resultType 标签,在⼀个类中包含了另⼀个对象是查询不出来被包含的对象的,⽐如以下实体类:

一对一映射

⼀对⼀映射要使⽤ <association> 标签,具体实现如下(⼀篇⽂章只对应⼀个作者):

使⽤ <association>标签,表示⼀对⼀的结果映射:

property 属性:指定 Article 中对应的属性,即⽤户。

resultMap 属性:指定关联的结果集映射,将基于该映射配置来组织⽤户数据。

注意:columnPrefix 属性不能省略,如果省略,当两表中如果有相同的字段,那么就会导致查询出错。⽐如两篇⽂章都是⼀个⼈写的,如果没有 columnPrefix 就会导致查询的⽤户 id被⽂章表 id 覆盖,查询出错。使用columnPrefix可以解决多表中相同字段数据覆盖的问题。

一对多映射

⼀对多需要使⽤ <collection> 标签,⽤法和 <association> 相同,如下所示(一个作者对应多篇文章):

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

crazy_xieyi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值