1) 树结构构建
当前端展示需要构建一个树形结构菜单时,如下↓
在数据库中保存的字段为:
id :主键id
parent_id : 父类id
name : 名称
created_time : 创建时间
每天数据根据 parent_id 进行关联,parentId 也可以看为外键
这时候可以使用 Hutool 工具包中的 TreeUtil.build 方法来进行数据的树结构创建,
导入 Hutool maven 依赖
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.7.20</version>
</dependency>
然后代码如下:
TreeNodeConfig treeNodeConfig = new TreeNodeConfig();
treeNodeConfig.setIdKey("id");
treeNodeConfig.setParentIdKey("parentId");
treeNodeConfig.setChildrenKey("children");
treeNodeConfig.setNameKey("name");
treeNodeConfig.setWeightKey("createdTime");
List<Tree<String>> treeNodes = TreeUtil.build(list, "0", treeNodeConfig,
(treeNode, tree) -> {
tree.setId(treeNode.getId());
tree.setName(treeNode.getName());
tree.setParentId(treeNode.getParentId());
tree.setWeight(treeNode.getCreatedTime());
tree.putExtra("minioPath", treeNode.getMinioPath());
});
return treeNodes;
其中 treeNodeConfig 是为创建的树形结构来进行 key 字段设置
.setIdKey("id"); ----- 设置树结构主键key
.setParentIdKey("parentId"); ----- 设置树结构父类key
.setChildrenKey("children"); ----- 设置树结构子类key
.setNameKey("name"); ----- 设置数据名称key
.setWeightKey("created_time"); ----- 设置数据排序依据字段
TreeUtil.build 方法参数
list :为查询数据库得到的数据List集合
0 : 为数据库中根节点的父类id值 可以根据业务修改
treeNodeConfig : 对树结构的设置 config
方法中的代码是为返回的数据进行赋值,如果有扩展属性可以重复使用 tree.putExtra("key","value");来进行赋值。
最后得到的 treeNodes 为最终的树结构数据。
2)、数据排序
这时如果数据排序方式不对(顺序 、倒序)问题时 可以使用Collections.reverse() 方法来将数据进行翻转。
Tree<String> stringTree = treeNodes.get(0);
Collections.reverse(stringTree.getChildren());
return treeNodes;