mybatis同表树状查询
时间: 2023-05-17 08:03:38 浏览: 158
mybatis-plus分页查询的实现示例.docx
5星 · 资源好评率100%
可以使用 Mybatis 的递归查询功能来实现同表树状查询。具体实现可以参考以下代码:
```
<select id="getTree" resultType="Tree">
WITH RECURSIVE cte AS (
SELECT id, parent_id, name, 1 AS level
FROM my_table
WHERE parent_id IS NULL
UNION ALL
SELECT t.id, t.parent_id, t.name, c.level + 1
FROM my_table t
JOIN cte c ON t.parent_id = c.id
)
SELECT id, parent_id, name, level
FROM cte
ORDER BY id;
</select>
```
这段代码使用了 Common Table Expression (CTE) 和递归查询来实现同表树状查询。其中,`my_table` 是需要查询的表名,`id` 是节点的唯一标识,`parent_id` 是节点的父节点标识,`name` 是节点的名称,`level` 是节点的深度。
如果需要查询指定节点的子树,可以在 WHERE 子句中添加条件,例如:
```
WHERE parent_id = #{parentId}
```
其中,`#{parentId}` 是需要查询的节点的父节点标识。
阅读全文