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

Posted 牛哄哄的柯南

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了组织机构列表转树形结构Hutool工具类TreeUtil相关的知识,希望对你有一定的参考价值。

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

问题引入

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

具体操作

引入依赖

<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.8.6</version>
</dependency>

根据业务查出List

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

List转树形结构

//配置类
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

感谢支持牛哄哄的柯南,期待你的三连+关注~~

keep accumulate for my dream【共勉】

                                                       ↓   ↓   ↓   ↓   ↓   ↓  

以上是关于组织机构列表转树形结构Hutool工具类TreeUtil的主要内容,如果未能解决你的问题,请参考以下文章

TreeNode实现Java列表转树形结构列表

(id,pid)格式数据转树和森林结构工具类设计与实现

(id,pid)格式数据转树和森林结构工具类设计与实现

MySQL查询父节点下面的所有子孙节点,查询用户列表时多级(公司)部门处理,根据反射,递归树形结构工具类

MySQL查询父节点下面的所有子孙节点,查询用户列表时多级(公司)部门处理,根据反射,递归树形结构工具类

Qt QTreeWidget 树形结构实现(转)