1 pom.xml
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.26</version>
</dependency>
2 核心代码
import cn.beijing.satoken.domain.ZhiweiCityArea;
import cn.beijing.satoken.mapper.ZhiweiCityAreaMapper;
import cn.hutool.core.lang.tree.Tree;
import cn.hutool.core.lang.tree.TreeNodeConfig;
import cn.hutool.core.lang.tree.TreeUtil;
import cn.hutool.core.lang.tree.parser.NodeParser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
public class TreeController {
@Autowired
private ZhiweiCityAreaMapper zhiweiCityAreaMapper;
@RequestMapping("/tree")
public Object tree()
{
List<ZhiweiCityArea> zhiweiCityAreas_list = zhiweiCityAreaMapper.selectList(null);
//配置,可选项
TreeNodeConfig treeNodeConfig = new TreeNodeConfig();
// 就是生成的json,key起的名称,自定义属性名
treeNodeConfig.setWeightKey("orderNum");
treeNodeConfig.setIdKey("code");
treeNodeConfig.setChildrenKey("childrenNode");
// 最大递归深度
treeNodeConfig.setDeep(3);
/**
* 下面通过 hutool 提供的工具类 TreeUtil.build,将上面的菜单列表转换为树
* 3个参数
* 参数1:数据源,即要被转换为树的原始数据
* 参数2:根节点id,一般为“”,0,根据实际情况来,这里只展示部分数据,快点
* 参数3:配置,可选项
* 参数4:转换器,数据源的数据可以是各种类型的,但是hutool不能识别,所以这里需要一个转换器,
* 将第一个参数中的元素转换为 hutool可以识别的类型:Tree类(hutool对树节点的一个抽象),
* Tree表示树的一个节点,里面包含了这个节点所有的信息
*/
List<Tree<String>> data = TreeUtil.build(zhiweiCityAreas_list, "12547854",treeNodeConfig, new NodeParser<ZhiweiCityArea, String>() {
@Override
public void parse(ZhiweiCityArea zhiweiCityArea, Tree<String> tree) {
tree.setId(zhiweiCityArea.getCode());
tree.setName(zhiweiCityArea.getName());
tree.setParentId(zhiweiCityArea.getParentCode());
tree.setWeight(zhiweiCityArea.getPaixu());
// 扩展属性 ...
tree.put("otherInfo", zhiweiCityArea.getOtherinfo());
}
});
return data;
}
}
测试,效果如下
sql脚本下载
通过网盘分享的文件:省市区三级sql.sql
链接: https://pan.baidu.com/s/1zK7AxRegtfcH28dFeTcByQ?pwd=651i 提取码: 651i