MyBatis 联合查询 一对一 或 一对多
时间: 2024-09-09 20:08:32 浏览: 49
MyBatis 是一款轻量级的对象关系映射框架,它允许你在 Java 应用程序中方便地操作数据库。在处理联合查询(即一对一或多对一关联)时,MyBatis 提供了一种灵活的方式来获取数据。
**一对一关联**(One-to-One):
当你有一个表A依赖于另一个表B的唯一标识时,可以使用一对一关联。在MyBatis中,你可以通过`<association>`标签或者`@OneToOne`注解来实现。例如,假设表B有一个外键引用A的ID,你可以编写这样的SQL(在XML映射文件中):
```xml
<select id="selectWithOneToOne" resultType="com.example.A">
SELECT * FROM A WHERE id = #{id}
<include refid="fetchB"/>
</select>
<sql id="fetchB">
LEFT JOIN B ON A.id = B.parent_id
</sql>
```
**一对多关联**(One-to-Many):
在这种场景下,表A有多个记录对应表B的一个记录。通常会使用`<collection>`标签或者`@OneToMany`注解。比如,A有一个集合B:
```xml
<select id="selectOneToMany" resultType="com.example.A">
SELECT * FROM A
<include refid="fetchB"/>
</select>
<sql id="fetchB">
LEFT JOIN B b ON a.id = b.parent_id
GROUP BY a.id
</sql>
```
在这里,`fetchB`标签用于加载B表的数据,并按A表的主键分组,确保每个A对象关联的所有B对象都被一起返回。
阅读全文