Java优雅的实现树形菜单、树形结构
业务场景
需要将集合转换为树形结构的集合,常见的有菜单树、部门树
最后实现的效果
1 |
|
前置知识点
需要具备以下java知识可以轻松理解代码
- 建造者模式(最简单的就是lombok的@Builder注解)
- java泛型的使用
- 函数式接口(这里只用到了Function)
- 递归调用
- mapstruct框架的使用
实现步骤
- 一般来说,树形结构通常是给前端渲染的,必要的有4个字段
- 主键、父级id、显示内容 还有一个子节点
- id、parentId、label、children
TreeModel 公共树实体
1 |
|
这里我们需要定一个泛型,业务场景不同的实体构建的树不同、参数不同
TreeBuilder 构建树结构类
1 |
|
模拟实现菜单的树形构建
这里模拟实现菜单的树构建,肯定有一个bean对应的菜单表
1 |
|
- 为了构建树结构,我们需要给他添加一个children属性,原有的属性不需要改表,只需要继承TreeModel
1 |
|
- 再结合mapstruct,让我们免去手动的set属性赋值
1 |
|
准备工作都完成了,可以直接使用TreeBuilder
1 |
|
实现效果
代码有需要的话我放在了git仓库嗷~:gitee地址
斜体
Java优雅的实现树形菜单、树形结构
http://www.codersand.fun/2023/04/23/course/Java优雅的实现树形菜单/