• 【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);
            }
        }
    }
  • 相关阅读:
    一.创建型模式 Factory
    Tcp/Ip I/O函数
    Tcp/Ip协议理解_简单实例
    Tcp/Ip协议理解_3
    Tcp/Ip协议理解_2
    Tcp/Ip协议理解_1
    abp+angular+bootstrap-table的使用
    Abp mvc angular 添加视图
    Abp添加菜单
    JS 获取一串路径中的文件名称
  • 原文地址:https://www.cnblogs.com/mindzone/p/14888046.html
Copyright © 2020-2023  润新知