mybatis中@One嵌套@One
时间: 2023-08-21 08:29:06 浏览: 117
在 MyBatis 中使用 @One 注解嵌套 @One 注解,可以实现多表关联查询。例如,假设我们有两个实体类 A 和 B,它们之间是一对一的关系。代码示例如下:
```
public class A {
private Integer id;
private String name;
private B b;
// 省略 getter 和 setter 方法
}
public class B {
private Integer id;
private String name;
private C c;
// 省略 getter 和 setter 方法
}
public class C {
private Integer id;
private String name;
// 省略 getter 和 setter 方法
}
```
我们需要查询 A、B、C 三张表的数据,并将它们组装成一个 A 对象。这时候,我们可以在 A 类的映射文件中使用 @One 注解嵌套 @One 注解,代码示例如下:
```
<!-- A 的映射文件 -->
<select id="selectA" resultMap="aResultMap">
select a.id, a.name, b.id as b_id, b.name as b_name, c.id as c_id, c.name as c_name
from a
left join b on a.b_id = b.id
left join c on b.c_id = c.id
</select>
<resultMap id="aResultMap" type="A">
<id property="id" column="id"/>
<result property="name" column="name"/>
<association property="b" javaType="B" resultMap="bResultMap"/>
</resultMap>
<resultMap id="bResultMap" type="B">
<id property="id" column="b_id"/>
<result property="name" column="b_name"/>
<association property="c" javaType="C" resultMap="cResultMap"/>
</resultMap>
<resultMap id="cResultMap" type="C">
<id property="id" column="c_id"/>
<result property="name" column="c_name"/>
</resultMap>
```
在 A 类的映射文件中,我们使用 @One 注解将 B 对象映射到 A 对象中的 b 属性上,然后在 B 类的映射文件中,再使用 @One 注解将 C 对象映射到 B 对象中的 c 属性上。这样就完成了多表关联查询,并将结果组装成一个 A 对象。
阅读全文