zoukankan      html  css  js  c++  java
  • 【Java】树状节点结构的数据

    数据库的菜单,权限表是具有多层级结构,有ID和PARENT_ID两个关键性的字段

    通过PARENT_ID和ID相等构建层级结构:

    然后需要在Java中构建出层级的数据结构,然后输出成JSON返回给前端渲染:

    1、构建Tree的结构体:

    字段ID和PARENT_ID,然后和一个必须初始化的List集合、

    其他的字段就是要显示的东西,这些随意加

    public class WechatOrgTreeDto {private Integer id;
        private Integer parentId;
        private String name;
        private List<WechatOrgTreeDto> list = new ArrayList<>();
    
        public WechatOrgTreeDto(Integer id, Integer parentId, String name) {
            this.id = id;
            this.parentId = parentId;
            this.name = name;
        }
    
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        public Integer getParentId() {
            return parentId;
        }
    
        public void setParentId(Integer parentId) {
            this.parentId = parentId;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public List<WechatOrgTreeDto> getList() {
            return list;
        }
    
        public void setList(List<WechatOrgTreeDto> list) {
            this.list = list;
        }
    }

    2、构建数据

    然后是构建结构的方法:

    final String SQL = "SELECT * FROM tt_wechat_org";
    // 先查询所有
    List<Map> all = DAOUtil.findAll(SQL, null);
    
    List<WechatOrgTreeDto> treeList = new ArrayList<>();
    // 第一次遍历是为处理数据
    for (Map map : all) {
        treeList.add(new WechatOrgTreeDto(
                Integer.valueOf(map.get("ID").toString()),
                Integer.valueOf(map.get("PARENT_ID").toString()),
                map.get("NAME").toString()
        ));
    }
    
    // 第二次遍历开始构建结构
    List<WechatOrgTreeDto> wechatOrgTreeDtoList = new ArrayList<>();
    
    for (WechatOrgTreeDto wechatOrgTreeDto : treeList) {
        // 需要头节点装入第一个元素,
        if(1 == wechatOrgTreeDto.getId()) wechatOrgTreeDtoList.add(wechatOrgTreeDto);
        for (WechatOrgTreeDto subTree : treeList) {
            // 第二次便利用子节点的ParentID和父节点ID对比进行添加
            if (subTree.getParentId() .equals(wechatOrgTreeDto.getId()) ) {
                wechatOrgTreeDto.getList().add(subTree);
            }
        }
    }
  • 相关阅读:
    Web前端 --- jQuery
    关于前端 jQuery 面试的知识点
    面试官:讲讲mysql表设计要注意啥
    Python中的单例模式的几种实现方式的及优化
    HTTP协议【详解】——经典面试题
    Web前端 --- BOM和DOM
    基于css文件编写一个简单的html前端页面
    Web前端 --- JavaScript
    Linux 命令(一) find&grep文件查找命令
    线程池
  • 原文地址:https://www.cnblogs.com/mindzone/p/14888046.html
Copyright © 2011-2022 走看看