在开发过程中,必定会遇到树形结构的数据,一般都是后端直接从库里查询出来然后自定义方法去封装成树形树形返回给前端。其实Hutool工具类也提供了这个方法,这种方式使用起来也很简单。
//1.配置树节点信息,指定key,可直接使用默认的key TreeNodeConfig config = new TreeNodeConfig(); //2.查询数据 List<AreaCode> areaCodes = areaCodeDao.selectAll(); //3.转为树结构,其中rootId参数代表根节点的父级id值 List<Tree<String>> treeList = TreeUtil.build(areaCodes, "0", config, ((object, treeNode) -> { //对key进行映射赋值 treeNode.putExtra("id", object.getId()); treeNode.putExtra("parentId", object.getPid()); treeNode.putExtra("name", object.getName()); treeNode.putExtra("deep", object.getAreaLevel()); }));
在封装树形结构时,需要将数据与树结构对象进行映射,上述是采用的默认的key,其源码如下:
当然也可以自定义key,那么在进行key映射时需要保持一致
TreeNodeConfig config = new TreeNodeConfig(); //id config.setIdKey("id"); //父id config.setParentIdKey("pid"); //名称 config.setNameKey("name"); //最大递归深度 config.setDeep(3); //孩子节点 config.setChildrenKey("childrenList"); //排序字段 config.setWeightKey("sort");
查询的数据如下图,是树形结构。