mybatis多级关联查询数据封装
时间: 2023-07-25 07:18:18 浏览: 69
MyBatis是一款优秀的持久层框架,支持多级关联查询数据封装。
在多级关联查询时,需要先在Mapper.xml文件中编写相应的SQL语句,然后通过resultMap进行结果映射。
以下是一个示例:
假设有三张表:A、B、C,它们之间的关系是A和B是一对多关系,B和C是一对多关系。
1.在Mapper.xml文件中编写SQL语句
```
<select id="findAWithBC" resultMap="aResultMap">
select *
from A a
left join B b on a.id = b.a_id
left join C c on b.id = c.b_id
</select>
```
2.在Mapper.xml文件中编写ResultMap
```
<resultMap id="aResultMap" 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>
```
3.在Java代码中调用Mapper方法
```
List<A> aList = mapper.findAWithBC();
```
这样就可以将多级关联查询的结果封装到A对象中,并且A对象中的bs属性也会自动填充B对象,B对象中的cs属性也会自动填充C对象。
需要注意的是,如果关联查询的结果是一对一的关系,可以使用association标签来进行映射。