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. [GO]结构体成员的使用:指针变量

    package main import "fmt" func main() { type student struct { id int name string sex byte ...

  2. linux 创建数据库

    mysql -uroot -pxxxxxx 1. 修改服务器的字符集 打开/etc/mysql/my.cnf,在[mysqld]后添加character-set-server=utf8 2. 查看my ...

  3. 【转载】Zookeeper 安装和配置

    [转载原文链接 ] Zookeeper的安装和配置十分简单, 既可以配置成单机模式, 也可以配置成集群模式. 下面将分别进行介绍. 单机模式 点击这里下载zookeeper的安装包之后, 解压到合适目 ...

  4. ScreenCapture-drupal 7.34-ckeditor4x整合教程

    1.1. drupal 7x-ckeditor4x 插件下载:Drupal 7x, 1.1.1. 安装ckeditor4x 下载插件 说明:下载并解压 CKEditor4x插件:https://yun ...

  5. 创建Jutil (单元测试)

    如何创建JUtil 这里拿Dynamic项目来演示,首先创建一个Dynamic项目,起名,点next, 继续点next, 将web.xml文件勾选,finish, 接下来在Java Resources ...

  6. 关于Javascript 那些事

    Javascript是一种由Netscape的LiveScript发展而来的原型化继承的面向对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如Perl,遗留的速度问题,为 ...

  7. 解决svn:E155037错误(另附查看.db文件的工具)

    今天使用svn提交代码的时候出问题了,Error:svn: E155037.....Previous operation has not finished; run 'cleanup' if it w ...

  8. Using Lucene's new QueryParser framework in Solr

    Sometime back, I described how I built (among other things) a custom Solr QParser plugin to handle P ...

  9. Apache Shiro 10分钟之旅!

    欢迎来到Apache Shiro 10分钟之旅! 希望通过这个简单.快速的示例,可以让你对应用程序中使用Shiro有个深入的了解.嗯,10分钟你应该可以搞定它. 概述 Apache Shiro是什么? ...

  10. RAD Studio Demo Code和几个国外FMX网站 good

    FireMonkey X –  Amazing overview of FireMonkey FMX Feeds – All your FireMonkey news in one place FMX ...