首先先谈谈resultType和resultMap,其中resultType是一种返回类型,绝⼤数查询场景可以使⽤ resultType 进行返回,它的优点是使用方便,直接定义到某个实体类,如下代码所示:
而resultMap是返回字典映射,它的使用场景是:数据库中的字段名称和程序中的属性名不相同的情况,在多表查询中的一对一和一对多关系可以使用resultMap映射并查询数据。
在多表查询时,如果使⽤ resultType 标签,在⼀个类中包含了另⼀个对象是查询不出来被包含的对象的,⽐如以下实体类:
一对一映射
⼀对⼀映射要使⽤ <association> 标签,具体实现如下(⼀篇⽂章只对应⼀个作者):
使⽤ <association>标签,表示⼀对⼀的结果映射:
property 属性:指定 Article 中对应的属性,即⽤户。
resultMap 属性:指定关联的结果集映射,将基于该映射配置来组织⽤户数据。
注意:columnPrefix 属性不能省略,如果省略,当两表中如果有相同的字段,那么就会导致查询出错。⽐如两篇⽂章都是⼀个⼈写的,如果没有 columnPrefix 就会导致查询的⽤户 id被⽂章表 id 覆盖,查询出错。使用columnPrefix可以解决多表中相同字段数据覆盖的问题。
一对多映射
⼀对多需要使⽤ <collection> 标签,⽤法和 <association> 相同,如下所示(一个作者对应多篇文章):
文章介绍了在MyBatis中,resultType用于简单查询返回,直接绑定到实体类,而resultMap则适用于字段名不同、一对一和一对多关系的复杂查询。在一对一映射中,使用<association>标签,而在一对多映射中,使用<collection>标签,两者都需注意字段冲突问题,columnPrefix属性用于避免相同字段的数据覆盖。
3880

被折叠的 条评论
为什么被折叠?



