Hutool树结构工具-TreeUtil构建树形结构

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值