JAVA查询树结构数据(省市区)使用hutool工具实现

摘要:
JAVA使用hutool工具实现代码查询树结构数据(省市):@PostMapping(“/getTree”)publicObjectgetTree(){//查询数据列表areaList=areaService.List();//整个树数据列表˂TreeNode˃treeNodeList=areaList.stream().map(area-˃{/
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;

数据结构:

JAVA查询树结构数据(省市区)使用hutool工具实现第1张

官方文档: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工具实现》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Cisco设备IOS的恢复方法 两种方法Nginx超时timeout配置总结下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

Notification(Notification的通知栏常驻、Notification的各种样式、Notification点击无效)

所以Notification的使用,也在开发当中,使用的越来越频繁。今天我就来跟大家分享一下Notification的常用事项。最新的Notification的用法,是推荐使用V4包下的NotificationCompat.Builder,利用它,进行各种设置,具体的用法先别着急,我们慢慢道来。//Notification.DEFAULT_SOUND:系统默...

Practical Shader Development: Vertex and Fragment Shaders for Game Developers (Kyle Hallady 著)

这是我们描述形状的方法之一,它将使计算机变得有意义。要定义形状,我们需要存储关于三件事的信息:顶点、边和面。顶点是三维空间中的点。边是连接顶点的最内层。面是由三个或多个角度形成的二维形状。你不能把脸想象成只有在记忆中恢复的一个网格的垂直面之间的空间,而每一个共享的需要和脸都是由垂直面顺序简单定义的。因为很多名字都不会出现在网格的“背面”,所以正面的哪一面很重...

甲骨文ARM架构云服务器部署宝塔+.net 5.0

前言前段时间,甲骨文推出了一款采用ARM架构的免费服务器,可以申请永久免费的4核、24GB内存、4G带宽,非常棒。然而,由于ARM架构的CPU。例如,编译和安装MySQL 5.7是可以的,所以不需要麻烦。创建后,ssh被连接并切换到根帐户sudo-i II。安装宝塔。创建服务器。更新包并安装BBR后,您可以使用官方脚本yu_install-wget&...

浪潮各机型管理芯片BMC IP(智能平台管理接口)设置

NF5240m3/NF5140m3/NF5280m3/SA5212H2/NP5540M3NF5270M3/NF5170M3/NF8420m3IPMI主板集成管理芯片BMCIP设置开机按DEL键进入BIOS设置选择"ServerMgmt"---"BMCNetworkConfiguration"---"lanchannel1/2"---"staticipaddr...

linux 安装nginx

1.检查服务器上是否安装了nginx:nginx v2。查看编译参数:nginxv3。查看安装目录:rpm-qlnginx4。查看配置文件:/etc/logrotate D/nginx5。在安装nginx之前,请确保系统中安装了gcc、pcre-devel、zlib-devel和openssl-devel。5.1如果安装了rpm软件包,您可以使用rpm qa...

登陆脚本

#!' num_ count+=1其他:lock_ input(用户名)#############1##########_###!...