Hutool で再帰を実装する
コードを表示するには、2 に直接スキップしてください
Hutool公式サイト:https://hutool.cn/docs/#/
1.依存関係を導入する
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.11</version>
</dependency>
私が使用しているhutoolのバージョンは5.4.1
データベースは
*通常のクエリ (これはすべての単純なクエリで、ページングなどはありません)、これは並べ替えフィールドを使用しないクエリです
通常のリスト クエリ スタイルは次のとおりです。 | 再帰クエリは次のとおりです。 |
---|---|
2.コード
//查询全部
List<UserTest> list = userTestMapper.selectAll();
//配置
TreeNodeConfig treeNodeConfig = new TreeNodeConfig();
// 自定义属性名 都要默认值的
treeNodeConfig.setWeightKey("sort"); //权重排序字段 默认为weight
treeNodeConfig.setIdKey("id"); //主键 默认为id
treeNodeConfig.setNameKey("name"); //名称 默认为name
treeNodeConfig.setParentIdKey("parentId"); //父节点 默认为parentId
// treeNodeConfig.setChildrenKey("children"); //子点 默认为children
treeNodeConfig.setDeep(3); //最大递归深度 默认此配置为空,不限制(从0开始)
//转换器, 0表示最顶层的id是0
List<Tree<String>> treeNodes = TreeUtil.build(list, "0", treeNodeConfig,
(treeNode, tree) -> {
tree.setId(Convert.toStr(treeNode.getId()));
tree.setParentId(Convert.toStr(treeNode.getParentId()));
tree.setWeight(treeNode.getSort());
tree.setName(treeNode.getName());
// 扩展属性 ...
tree.putExtra("other", treeNode.getOther());
tree.putExtra("time", treeNode.getTime());
});