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生成树关系的菜单的更多相关文章

  1. Android版本信息及与Linux和Java的关系

    1.Android与Linux和Java的关系 Android严格来说,不能算是Linux,Android是一个统称,具体来说,是Google用了Linux的一个核心,用这个核心来管理进程,控制硬件. ...

  2. 【toplink】 位居第一的Java对象关系可持续性体系结构

    TopLink,是位居第一的Java对象关系可持续性体系结构,原署WebGain公司的产品,后被Oracle收购,并重新包装为Oracle AS TopLink.TOPLink为在关系数据库表中存储 ...

  3. JavaSE复习日记 : Java操作符\关系运算符\逻辑运算符\赋值运算符\字符串连接符\三元运算符

    // Java操作符\关系运算符\逻辑运算符\赋值运算符\字符串连接符\三元运算符 /* * 一 Java操作符 * * Java操作符都有哪些? * +, -, *, /, %, ++, -- * ...

  4. cpu个数、核数、线程数、Java多线程关系的理解

    cpu个数.核数.线程数.Java多线程关系的理解 2017年12月08日 15:35:37 一 cpu个数.核数.线程数的关系 cpu个数:是指物理上,也及硬件上的核心数: 核数:是逻辑上的,简单理 ...

  5. android与java的关系

    摘自:http://bbs.51cto.com/thread-944897-1.html   相信学习android的人都会想过或者想知道这个问题,那就请你耐心的看完这篇文章吧,你会对android与 ...

  6. 【Java】详解菜单组件

    在这篇文章中,笔者会介绍Java图形界面编程中菜单组件的用法.关于菜单组件,因为java存在AWT编程和Swing编程,所以菜单组件也存在AWT菜单和Swing菜单.因为Swing组件使用的比较多,所 ...

  7. Java构建网站多级菜单功能解决方案

    在网站开发的时候我们会对网站的栏目进行分类,一个栏目可以有多个子分类,一个子分类又可以有分裂,例如:新闻栏目下有每日早报和每日晚报两个栏目,其中每日早报下面又分为上海早报,北京早报,杭州早报,下面是京 ...

  8. 11.JAVA之GUI编程菜单

    功能:添加菜单组件 知识总结: 代码如下: import java.awt.FlowLayout; import java.awt.Frame; import java.awt.Menu; impor ...

  9. Java SE ---关系运算符

    java里的关系运算符有这么几种:大于(>).小于(<).等于(==).不等于(!=).大于等于(>=).小于等于(<=), 关系运算的结果是个boolean值,关系式成立为t ...

随机推荐

  1. NodeJS下的阿里云企业邮箱邮件发送问题

    还没有到11点,再顺带发一个上次碰到NodeJS的邮箱插件nodeMailer不支持阿里云邮件问题. 网上很多资料都默认使用QQ之类的邮箱,因为nodeMailer默认添加了QQ之类的SMTP地址,但 ...

  2. HBase-0.98.0和Phoenix-4.0.0分布式安装指南

    目录 目录 1 1. 前言 1 2. 约定 2 3. 相关端口 2 4. 下载HBase 2 5. 安装步骤 2 5.1. 修改conf/regionservers 2 5.2. 修改conf/hba ...

  3. iBeacon的第一篇(基于Swift实现)

    低功耗蓝牙技术现在几乎是只能手机的标配.随着这一技术的发展,苹果在2013年WWDC大会上,苹果推出iBeacon技术.该技术允许开发人员开发能够使用iBeacon硬件传感器的iOS应用程序,来为相应 ...

  4. [Selenium With C#基础教程] Lesson-05 文本框

    作者:Surpassme 来源:http://www.jianshu.com/p/7dca7d0d1ea3 声明:本文为原创文章,如需转载请在文章页面明显位置给出原文链接,谢谢. 文本框在Web页面中 ...

  5. Git出现SSL connect error的解决办法

    最近在使用Go开发项目中,因为需要安装一个Package,所以使用了go get命令 ,然后就出现git clone ... SSL connect error的错误: 出现这种错误有可能是nss的版 ...

  6. 通俗理解java序列化

    1 序列化是干什么的呢? 搬家的 简单说就是为了保存在内存中的各种对象的状态(也就是实例变量,不是方法),并且可以把保存的对象状态再读出来.虽然你可以用你自己的各种各样的方法来保存object sta ...

  7. Backup--压缩备份和数据库压缩

    1> 即使数据库启用了页压缩或行压缩,压缩备份也可以有效减小备份的大小,压缩备份的压缩效率取决于表中的数据类型 2> 数据库压缩有利于降低备份时间(因为数据库变小) 3> 对已启用压 ...

  8. Django-03视图层

    5.1 视图函数 一个视图函数,简称视图,是一个简单的Python 函数,它接受Web请求并且返回Web响应.响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片 ...

  9. 【bzoj4887】:[Tjoi2017]可乐 矩阵乘法,快速幂

    [bzoj4887]:[Tjoi2017]可乐 题目大意:一张无相连通图(n<=30),从1号点开始走,每秒可以走到相邻的点也可以自爆,求第t秒(t<=1e6)后所有的方案数是多少对201 ...

  10. 用最短的payload绕过WAF(入门)

    本文作者:jishuzhain <font color=green>想绕过一个WAF,我们可以用最短的payload来做,这里只是基础示例,望各位大佬勿喷,小弟在此谢过.</font ...