题目
MyBatis 能执行一对一、一对多的关联查询吗
答案
MyBatis 支持关联查询(嵌套查询)。
- 使用 `resultMap` + `collection` 标签(关联集合对象)来实现一对多(比如一个国家对应多个城市)的关联查询
- 使用 `resultMap` + `association` 标签(关联对象)来实现一对一(比如一个城市对应一个国家)的关联查询
> 具体代码可以参考这篇文章:[MyBatis 关联查询一对一和一对多的实现](https://blog.csdn.net/Evankaka/article/details/45674101)
关联/嵌套的含义为使用 join 查询,一部分列是 A 对象的属性值,另外一部分列是关联对象 B 的属性值,好处是只发一个 SQL 查询,就可以把主对象和其关联对象查出来。其去重复的原理是 `<resultMap>` 标签内的 `<id>` 子标签,指定了唯一确定一条记录的 id 列,MyBatis 根据 `<id>` 列值来完成去重功能, `<id>` 可以有多个,代表了联合主键的语意
