MyBatis - 映射树数据结构

时间:2012-09-07 13:03:05

标签: java java-ee mybatis

如何将表id | parent_id | name映射到我的pojo类:

public class Node {
  private Integer id;
  private Integer parentId;
  private String name;
  private List<Node> children;
  //getters and setters
}

我想获得带有填充子列表的根节点列表(parent_id = null)。树深没有限制。我想的是:

<resultMap id="nodeResult" type="Node">
  <id property="id" column="id"/>
  <result property="parentId" column="parent_id"/>
  <result property="name" column="name"/>
  <collection property="children" resultMap="nodeResult"/>
</resultMap>
<select id="selectNode" resultMap="nodeResult">
  SELECT * FROM NODE
</select>

我不知道在哪里放置限制儿童列表:id = parentId。我不想使用嵌套选择

1 个答案:

答案 0 :(得分:0)

没有办法让一个任意深度的树在ResultMap中自动填充。

DB特定解决方案是一种选择吗?例如,使用PostgreSQL,您可以使用公用表表达式将数据选择到ResultSet中,该ResultSet可能适用于映射到树中。

否则,您应该只更改ResultMap中的集合定义,以指向选择子节点的查询,这些子节点可以重用相同的resultmap来获取递归行为