MyBatis之多表查询

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

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

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

一对一映射

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

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

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

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

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

一对多映射

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

猜你喜欢

转载自blog.csdn.net/crazy_xieyi/article/details/129479738