Java生成树关系的菜单
1.菜单bean
public class Menu {
private String id;
private String menuname;
private String parentid;
private String sort;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id == null ? null : id.trim();
}
public String getMenuname() {
return menuname;
}
public void setMenuname(String menuname) {
this.menuname = menuname == null ? null : menuname.trim();
}
public String getParentid() {
return parentid;
}
public void setParentid(String parentid) {
this.parentid = parentid == null ? null : parentid.trim();
}
public Integer getSort() {
return sort;
}
public void setSort(Integer sort) {
this.sort = sort;
}
}
2.菜单树bean
import java.util.ArrayList;
import java.util.List;
import menu;
public class MenuTreeNew {
private List<MenuTreeNew> children;
private String id;
private String menuname;
private String parentid;
private Integer sort;
public MenuTreeNew(String id, String menuname, String parentid, int sort) {
super();
this.id = id;
this.menuname = menuname;
this.parentid = parentid;
this.sort = sort;
}
public List<MenuTreeNew> getChildren() {
return children;
}
public void setChildren(List<MenuTreeNew> children) {
this.children = children;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getMenuname() {
return menuname;
}
public void setMenuname(String menuname) {
this.menuname = menuname;
}
public String getParentid() {
return parentid;
}
public void setParentid(String parentid) {
this.parentid = parentid;
}
public Integer getSort() {
return sort;
}
public void setSort(Integer sort) {
this.sort = sort;
}
public MenuTreeNew(List<MenuTreeNew> children, String id, String menuname, String parentid, int sort) {
super();
this.children = children;
this.id = id;
this.menuname = menuname;
this.parentid = parentid;
this.sort = sort;
}
/**
* 部门树构建
* @author jgx
* @date 2019年3月22日
* @version 1.0
*/
public static class Builder{
private List<Menu> menus;
public Builder(List<Menu> menus) {
super();
this.menus = menus;
}
/**
* 查找孩子节点
* @param node
*/
private void findChildren(MenuTreeNew node){
if (node == null)
return;
if (node.getChildren() == null)
node.setChildren(new ArrayList<MenuTreeNew>());
for(Menu depart : menus){
if(depart.getParentid().equals(node.getId()) ){
MenuTreeNew dt = new MenuTreeNew(new ArrayList<MenuTreeNew>(),depart.getId(),depart.getMenuname(),depart.getParentid(),depart.getSort());
node.getChildren().add(dt);
findChildren(dt);
}
}
}
/**
* 构建
* @return 返回树菜单
*/
public List<MenuTreeNew> build(){
if (menus == null || menus.size() == 0)
return null;
List<MenuTreeNew> trees = new ArrayList<MenuTreeNew>();
//构建root
for(Menu depart : menus){
if (depart.getParentid().equals("0"))
trees.add(new MenuTreeNew(depart.getId(),depart.getMenuname(),depart.getParentid(),depart.getSort()));
}
//递归查找子节点
for(MenuTreeNew dt:trees){
findChildren(dt);
}
return trees;
}
}
}
3.controller
@RequestMapping(value="/list", method = RequestMethod.GET)
@ResponseBody
public ReponseResult<List<Menu>> list(){
List<Menu> menus = menuMapper.selectByExample(null);
return ReponseResult.success(menus);
}
原创代码,引用请标注出处 https://www.cnblogs.com/guangxiang/p/10621570.html
Java生成树关系的菜单的更多相关文章
- Android版本信息及与Linux和Java的关系
1.Android与Linux和Java的关系 Android严格来说,不能算是Linux,Android是一个统称,具体来说,是Google用了Linux的一个核心,用这个核心来管理进程,控制硬件. ...
- 【toplink】 位居第一的Java对象关系可持续性体系结构
TopLink,是位居第一的Java对象关系可持续性体系结构,原署WebGain公司的产品,后被Oracle收购,并重新包装为Oracle AS TopLink.TOPLink为在关系数据库表中存储 ...
- JavaSE复习日记 : Java操作符\关系运算符\逻辑运算符\赋值运算符\字符串连接符\三元运算符
// Java操作符\关系运算符\逻辑运算符\赋值运算符\字符串连接符\三元运算符 /* * 一 Java操作符 * * Java操作符都有哪些? * +, -, *, /, %, ++, -- * ...
- cpu个数、核数、线程数、Java多线程关系的理解
cpu个数.核数.线程数.Java多线程关系的理解 2017年12月08日 15:35:37 一 cpu个数.核数.线程数的关系 cpu个数:是指物理上,也及硬件上的核心数: 核数:是逻辑上的,简单理 ...
- android与java的关系
摘自:http://bbs.51cto.com/thread-944897-1.html 相信学习android的人都会想过或者想知道这个问题,那就请你耐心的看完这篇文章吧,你会对android与 ...
- 【Java】详解菜单组件
在这篇文章中,笔者会介绍Java图形界面编程中菜单组件的用法.关于菜单组件,因为java存在AWT编程和Swing编程,所以菜单组件也存在AWT菜单和Swing菜单.因为Swing组件使用的比较多,所 ...
- Java构建网站多级菜单功能解决方案
在网站开发的时候我们会对网站的栏目进行分类,一个栏目可以有多个子分类,一个子分类又可以有分裂,例如:新闻栏目下有每日早报和每日晚报两个栏目,其中每日早报下面又分为上海早报,北京早报,杭州早报,下面是京 ...
- 11.JAVA之GUI编程菜单
功能:添加菜单组件 知识总结: 代码如下: import java.awt.FlowLayout; import java.awt.Frame; import java.awt.Menu; impor ...
- Java SE ---关系运算符
java里的关系运算符有这么几种:大于(>).小于(<).等于(==).不等于(!=).大于等于(>=).小于等于(<=), 关系运算的结果是个boolean值,关系式成立为t ...
随机推荐
- 简单引入logback
pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w ...
- Android 文件存放路径【转】
对于应用携带的静态数据,可以放置在应用的assets目录或者res,raw目录下.对于assets目录下的静态数据,存在当文件最大支持1MB的局限,读取方式如下: 1 InputStream is = ...
- .net 序列化反序列化
.net 序列化创建对象的深拷贝 public static object DeepClone(object original) { using (MemoryStream stream = new ...
- [LeetCode 题解]: Maximum Depth of Binary Tree
Given a binary tree, find its maximum depth. The maximum depth is the number of nodes along the long ...
- 在ie6下将png24图片透明
没想到IETester中IE6和IE6真实版本不一样...之前一直没有实现png图片的透明度,现在发现原来是版本不一样惹的祸.总之,我将解决方法以demo的方式显示出来,以供再次利用. <!DO ...
- Backup--BUFFERSIZE 和BUFFERCOUNT
在备份时,可以通过设置BUFFERSIZE 和BUFFERCOUNT来控制备份的时间和CPU的消耗 使用TF 3605 和 TF 3213 来显示备份使用的 BUFFERCOUNT DBCC TRAC ...
- Windows7中7种不同关机模式介绍
在Win7关机选项中一共有7种关闭方式,分别为 Switch user(切换用户), Log off(登出), Lock(锁定), Restart(重启), Sleep(睡眠), Hibernate( ...
- Flex + Bison: Scanning from memory buffer
Found from StackOverflow: ========================================================================== ...
- Ajax 如何执行 Response.Redirect
Ajax 直接对服务端的Response.Redirect是不感冒的, 另觅途径, 具体可行办法如下: Web Service 服务端: public WXService() { if (!IsVal ...
- C语言程序设计
从 大一下 开始写博客,记录自己的学习. 而作为一个强迫症(比如我)是不允许做事缺头少尾的. 想了想还是得大一所学的C语言也搬上来,虽然结构老师经常嘲讽 (也不算嘲讽,算是絮叨吧)我的C语言,但是我还 ...