【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);
}
}
}
【Java】树状节点结构的数据的更多相关文章
- python os.walk处理树状目录结构的文件
在项目工作中,时常需要用到处理文件的方法,尤其是在windows环境下的树状目录结构 os.walk恰好能完美的处理这种树状目录结构文件,能高效地帮助我们得到我们需要处理的文件 目录结构: Deskt ...
- [Codeforces743D][luogu CF743D]Chloe and pleasant prizes[树状DP入门][毒瘤数据]
这个题的数据真的很毒瘤,身为一个交了8遍的蒟蒻的呐喊(嘤嘤嘤) 个人认为作为一个树状DP的入门题十分合适,同时建议做完这个题之后再去做一下这个题 选课 同时在这里挂一个选取节点型树形DP的状态转移方程 ...
- tree - 列出树状目录结构
tree - list contents of directories in a tree-like format. 树状显示目录结构 常用格式: tree [option] [directory] ...
- java树状结构之二叉树
参考:http://blog.csdn.net/zhangerqing/article/details/8822476 前面已经提到过树和二叉树的相关概念内容,下面主要来介绍下关于二叉树的创建,遍历, ...
- 由简入繁实现Jquery树状结构
在项目中,我们经常会需要一些树状结构的样式来显示层级结构等,比如下图的样式,之前在学.net的时候可以直接拖个服务端控件过来直接使用非常方便.但是利用Jquery的一些插件,也是可以实现这些效果的,比 ...
- 菜鸟笔记:node.js+mysql中将JSON数据构建为树(递归制作树状菜单数据接口)
初学Web端开发,今天是第一次将所学做随笔记录,肯定存在多处欠妥,望大家海涵:若有不足,望大家批评指正. 进实验室后分配到的第一个项目,需要制作一个不确定层级树形菜单的数据接口,对于从来没实战编过程的 ...
- JQuery 树状结构 jQuery-treeview.js 插件
由简入繁实现Jquery树状结构 在项目中,我们经常会需要一些树状结构的样式来显示层级结构等,比如下图的样式,之前在学.net的时候可以直接拖个服务端控件过来直接使用非常方便.但是利用Jquery的一 ...
- HDU 5869.Different GCD Subarray Query-区间gcd+树状数组 (神奇的标记右移操作) (2016年ICPC大连网络赛)
树状数组... Different GCD Subarray Query Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65536/6 ...
- Android一个炫酷的树状图组织架构图开源控件实现过程
Android一个炫酷的树状图组织架构图开源控件 文章目录 [1 简介] [2 效果展示] [3 使用步骤] [4 实现基本布局流程] [5 实现自由放缩及拖动] [6 实现添加删除及节点动画] [7 ...
- java代码实现目录结构
今天用java代码来实现.像我们电脑盘符那样的目录结构.在代码开始之前首先.介绍一下.用.java代码实现目录的思想. 第一步:完成基础的.大家想.我们是如何获取文件的.是不是用File类,直接就获取 ...
随机推荐
- 设计模式:命令模式(Command Pattern)及实例
好家伙, 0.什么是命令模式 在软件系统中,"行为请求者"与"行为实现者"通常呈现一种"紧耦合". 但在某些场合,比如要对行为进行&q ...
- java.io.File类中分隔符区别
1.separator File.separator是系统默认的文件分隔符号,在UNIX系统上,这个字段的值是'/';在Microsoft Windows系统上,它是''. 类型:String 2.s ...
- C#.NET6 ASP.NET CORE MVC 获取客户端IP
重点是拿到HttpContext 对象. 先从Headers["Cdn-Src-Ip"] 中取IP,其次从Headers["X-Forwarded-For"] ...
- javascript 类class设置访问器setter时出现Maximum call stack size exceeded错误
Maximum call stack size exceeded这个错误的意思是调用栈溢出,但是自己写的代码基本不可能出现.所以可能的原因是A调用了B,然后B再调用A,形成了循环调用.或者说是A自己调 ...
- 工具类——EventManager
EventManager using UnityEngine; using System.Collections; using System.Collections.Generic; using Un ...
- Sealos 5.0 正式发布,云本应该是操作系统
把所有资源抽象成一个整体,一切皆应用,这才是云应该有的样子. 2018 年 8 月 15 日 Sealos 提交了第一行代码. 随后开源社区以每年翻倍的速度高速增长. 2022 年我们正式创业,经历一 ...
- 12-CentOS7安装与管理数据库mariadb
关于Mariadb Mariadb和MySQL是同一个制作团队,命令几乎一样. 在centos中安装 yum -y install mariadb mariadb-server firewall-cm ...
- Linux开机启动三种方式
有的时候,我们开机启动一些命令或者是一段脚本,又或者是开机启动自定义的服务. 下面归纳了2种实现的方式. 方式1-开机启动命令 vim /etc/rc.local #添加你想执行的命令 chmod + ...
- 一款利用人工智能将自然语言查询转换为 SQL 代码的互译工具 - SQL Translator
前言 对于后端程序员来说,编写SQL代码是日常工作中不可或缺的一部分.然而,随着数据复杂性的增加,如何高效.准确地编写SQL查询成为了新的挑战.幸运的是,SQL Translator的出现为后端程序员 ...
- selenium验证码识别,超级鹰干超级鹰
from selenium.webdriver import Edge from selenium.webdriver.common.by import By # 在这里导入浏览器设置相关的类 fro ...