组织机构列表转树形结构【Hutool工具类TreeUtil】

问题引入

我们把单位表的信息根据上下级转化为树形结构输出展示,应该是很常见的,我们可以写递归自己去查,今天我们介绍的是使用Hutool的工具类TreeUtil来实现,只能说是十分之方便快捷简单。

具体操作

引入依赖

1
2
3
4
5
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.6</version>
</dependency>

根据业务查出List

1
2
//根据业务查出List
List<DeptEntity> deptList = deptMapper.getDeptList();

List转树形结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
//配置类
TreeNodeConfig treeNodeConfig = new TreeNodeConfig();
//主键
treeNodeConfig.setIdKey("id");
treeNodeConfig.setNameKey("name");
//标识父节点的id
treeNodeConfig.setParentIdKey("parent");
//单位级别相同的会有优先级排序,这个Weight就是
treeNodeConfig.setWeightKey("order");
// 最大递归深度
treeNodeConfig.setDeep(5);

//构建树形
//标识顶级单位的ID,实践证明null也是可以的
String rootId = "0"

//deptList 就是上面根据业务查出来的List
List<Tree<String>> treeNodes = TreeUtil.build(deptList , rootId, treeNodeConfig,
(treeNode, tree) -> {
//treeNode指的就是DeptEntity,也就是组织实体类
tree.setId(treeNode.getId());
tree.setParentId(treeNode.getParent());
//这里就是上面表示的排序
tree.setWeight(treeNode.getOrder());
tree.setName(treeNode.getName());

// 扩展属性 ...
//还可以添加一些自定义key的属性,例如关联上部门上的人员
tree.putExtra("people", treeNode.getPeople());
//tree.putExtra("other", new Object());
}
);

//最后得到的treeNodes就是我们想要的树形结构
return treeNodes;

这样就得到一个树形的组织机构树了,只要配置类和不同的数据库做对应即可。

版权声明:
原创博主:牛哄哄的柯南
博主原文链接:https://keafmd.blog.csdn.net/
个人博客链接:https://www.keafmd.top/

看完如果对你有帮助,感谢点击下面的点赞支持!
[哈哈][抱拳]

在这里插入图片描述
加油!

共同努力!

Keafmd