MyBatis 实现父子集合查询:详细教程和示例
MyBatis 是一个持久层框架,它提供了一种将数据库查询结果映射到 Java 对象的方式。使用 MyBatis 可以很方便地实现父子集合查询。
假设有一个父子关系的表结构如下:
父表 (parent):
id name
1 父节点1
2 父节点2
子表 (child):
id name parent_id
1 子节点1 1
2 子节点2 1
3 子节点3 2
要获取每个父节点及其对应的子节点集合,可以使用 MyBatis 的一对多关联映射。
首先,创建一个包含父节点和子节点的 Java 对象,如 Parent 对象和 Child 对象:
public class Parent {
private Integer id;
private String name;
private List<Child> children;
// 省略 getter 和 setter 方法
}
public class Child {
private Integer id;
private String name;
private Integer parentId;
// 省略 getter 和 setter 方法
}
接下来,在 MyBatis 的映射文件中配置一对多关联映射:
<!-- 父节点映射 -->
<resultMap id="parentMap" type="com.example.Parent">
<id property="id" column="id"/>
<result property="name" column="name"/>
<!-- 配置子节点集合 -->
<collection property="children" ofType="com.example.Child">
<id property="id" column="child_id"/>
<result property="name" column="child_name"/>
<result property="parentId" column="parent_id"/>
</collection>
</resultMap>
<!-- 查询父节点及其对应的子节点集合 -->
<select id="getParentsWithChildren" resultMap="parentMap">
SELECT p.id, p.name, c.id as child_id, c.name as child_name, c.parent_id
FROM parent p
LEFT JOIN child c ON p.id = c.parent_id
</select>
最后,在 Java 代码中调用 MyBatis 的查询方法获取父节点及其对应的子节点集合:
List<Parent> parents = sqlSession.selectList("getParentsWithChildren");
这样就可以获取到每个父节点及其对应的子节点集合了。
原文地址: https://www.cveoy.top/t/topic/p9kC 著作权归作者所有。请勿转载和采集!