mybatis 三表关联查询
时间: 2023-11-17 13:56:55 浏览: 149
三表关联查询可以使用 MyBatis 的嵌套查询语句来实现。假设我们有三个表 A、B、C,它们之间的关系是 A 和 B 一对多,B 和 C 一对多,我们要查询 A、B、C 三个表的数据,可以使用如下 SQL 语句:
```
SELECT *
FROM A
LEFT JOIN (
SELECT *
FROM B
LEFT JOIN C ON B.id = C.b_id
) AS BC ON A.id = BC.a_id
```
在 MyBatis 中,我们可以将这个 SQL 语句写成如下的 XML 映射文件:
```xml
<select id="selectABC" resultMap="abcResultMap">
SELECT *
FROM A
LEFT JOIN (
SELECT *
FROM B
LEFT JOIN C ON B.id = C.b_id
) AS BC ON A.id = BC.a_id
</select>
<resultMap id="abcResultMap" type="A">
<id property="id" column="a_id"/>
<result property="name" column="a_name"/>
<collection property="bs" ofType="B">
<id property="id" column="b_id"/>
<result property="name" column="b_name"/>
<collection property="cs" ofType="C">
<id property="id" column="c_id"/>
<result property="name" column="c_name"/>
</collection>
</collection>
</resultMap>
```
其中,`abcResultMap` 是一个复合映射,它包含了 A、B、C 三个表的数据。在 `abcResultMap` 中,我们使用了 `<collection>` 标签来表示 A 和 B、B 和 C 之间的一对多关系。
阅读全文