mybatis-plus查询树形结构
时间: 2023-09-20 14:09:22 浏览: 162
树形结构显示
5星 · 资源好评率100%
Mybatis-Plus 并没有提供特定的 API 来查询树形结构,但是可以通过自定义 SQL 语句来实现。下面是一种实现方式:
假设我们有一个表 `menu`,其中包含菜单的信息和父菜单ID,我们想要查询所有菜单并以树形结构展示,可以这样做:
1. 定义一个 MenuVO 类,包含菜单信息和子菜单列表:
```java
public class MenuVO {
private Long id;
private String name;
private List<MenuVO> children;
// getter/setter
}
```
2. 定义一个自定义 SQL 语句:
```xml
<select id="selectMenuTree" resultType="com.example.MenuVO">
select id, name
from menu
where parent_id is null
union all
select m.id, m.name
from menu m
join (
select id
from menu
where parent_id is null
union all
select parent_id
from menu
where parent_id is not null
) t on m.parent_id = t.id
order by id
</select>
```
这个 SQL 语句使用了递归查询,先查询出所有的顶级菜单,然后递归查询每个菜单的子菜单,最后按照菜单的层级顺序排序。
3. 在 MenuMapper 接口中定义一个方法:
```java
List<MenuVO> selectMenuTree();
```
4. 在业务代码中调用该方法,得到菜单树形结构:
```java
List<MenuVO> menuTree = menuMapper.selectMenuTree();
```
阅读全文