在开发过程中,必定会遇到树形结构的数据,一般都是后端直接从库里查询出来然后自定义方法去封装成树形树形返回给前端。其实Hutool工具类也提供了这个方法,这种方式使用起来也很简单。
第一步,加入maven依赖:
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.5.6</version>
</dependency>
第二步,查询数据:
List<AreaCode> areaCodes = areaCodeDao.selectAll();
第三步,配置treenodeconfig:
//配置
TreeNodeConfig treeNodeConfig = new TreeNodeConfig();
// 自定义属性名
treeNodeConfig.setWeightKey("order"); // 权重排序字段 默认为weight
treeNodeConfig.setIdKey("id"); // 默认为id可以不设置
treeNodeConfig.setNameKey("name"); // 节点名对应名称 默认为name
treeNodeConfig.setParentIdKey("parentId"); // 父节点 默认为parentId
treeNodeConfig.setChildrenKey("children"); // 子点 默认为children
treeNodeConfig.setDeep(3); // 可以配置递归深度 从0开始计算 默认此配置为空,即不限制
第四步,转换为树形结构:
List<Tree<String>> treeNodes = TreeUtil.build(nodeList, "0", treeNodeConfig,
// treeNode – 源数据实体
// tree – 树节点实体
(treeNode, tree) -> {
tree.setId(treeNode.getId());
tree.setParentId(treeNode.getParentId());
tree.setWeight(treeNode.getWeight());
tree.setName(treeNode.getName());
// 扩展属性 ...
tree.putExtra("extraField", 666);
tree.putExtra("other", new Object());
});
System.out.println(JSON.toJSONString(treeNodes));
把上边的代码放到一个方法中,就可以了。亲测可用,速度杠杠滴!