下面通过代码看下java查询树结构数据(省市区)使用hutool工具实现

代码:

@postmapping("/gettree")
    public object gettree() {
        // 查询数据
        list<lxhparea> arealist = areaservice.list();
        // 构建的整个树数据
        list<treenode<string>> treenodelist = arealist.stream().map(area -> {
            // 扩展字段赋值,下面要取这里的值
            map<string, object> extramap = new hashmap<>();
            extramap.put("domain", area.getdomain());
            extramap.put("isopen", area.getisopen());
            extramap.put("bigarea", area.getbigarea());
            // 单个树数据构建
            treenode<string> treenode = new treenode<string>()
                    .setid(string.valueof(area.getid())) // 主键
                    .setparentid(string.valueof(area.getreid())) // 父节点id
                    .setname(area.getname()) // 省份名称
                    .setweight(area.getsortorder()) //权重,排序
                    .setextra(extramap); // 扩展字段
            return treenode;
        }).collect(collectors.tolist());

        // 配置
        treenodeconfig treenodeconfig = new treenodeconfig();
        // 自定义属性名(修改默认名称)
        treenodeconfig.setweightkey("sortorder");
        treenodeconfig.setchildrenkey("childrennode");
        // 最大递归深度
        treenodeconfig.setdeep(1);

        //转换器
        list<tree<string>> treenodes = treeutil.build(treenodelist, "1", treenodeconfig,
                (treenode, tree) -> {
                    // 给树节点赋值(还能set 父 或子节点树)
                    tree.setid(treenode.getid());
                    tree.setparentid(treenode.getparentid());
                    tree.setweight(treenode.getweight());
                    tree.setname(treenode.getname());
                    // 扩展属性值赋值
                    // treenode.getextra().getordefault("domain", null) 是获取上面map放进去的值,没有就是 null
                    tree.putextra("domain", treenode.getextra().getordefault("domain", null));
                    tree.putextra("isopen", treenode.getextra().getordefault("isopen", null));
                    tree.putextra("bigarea", treenode.getextra().getordefault("bigarea", null));
                });
        return jsonutil.parse(treenodes);
    }

表结构

create table `lxhp_area` (
  `id` smallint(5) unsigned not null auto_increment,
  `reid` smallint(5) unsigned not null default '0',
  `name` varchar(120) not null default '',
  `sort_order` smallint(5) unsigned not null default '0',
  `is_open` tinyint(3) unsigned not null default '0',
  `domain` varchar(10) not null,
  `big_area` int(4) default null,
  primary key (`id`)
) engine=myisam auto_increment=3433 default charset=utf8;

数据结构:

官方文档:https://hutool.cn/docs/#/core/%e8%af%ad%e8%a8%80%e7%89%b9%e6%80%a7/%e6%a0%91%e7%bb%93%e6%9e%84/%e6%a0%91%e7%bb%93%e6%9e%84%e5%b7%a5%e5%85%b7-treeutil

到此这篇关于java使用hutool工具实现查询树结构数据(省市区)的文章就介绍到这了,更多相关java查询省市区树结构内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!