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 ...
随机推荐
- mvc中图片的保存和显示
图片保存到网站根目录(例如 D:\www\Web)下 Web 应用程序根目录运算符用“~”表示.注意不是网站根目录(网站根目录是指针对域名计算的) 即便是网站部署在其他网站下(例如IIS中,在A站下( ...
- idea中dependencies中总是有红色波浪线(缺少dependency)问题
使用IDEA进行maven开发时,将新项目import进工作空间时,Maven Projects栏中的dependencies中总是有红色波浪线,如下图: 但是这些jar在我本地的maven仓库中实际 ...
- 【更新】用word文档来发布到csdn等博客上边免去一张张上传图片的烦恼
目前大部分的博客作者在写博客这件事情上都会遇到以下3个痛点:1.所有博客平台关闭了文档发布接口,用户无法使用Word,Windows Live Writer等工具来发布博客.2.发布到博客或公众号平台 ...
- ScreenCapturePro2 for Joomla_3.4.7-ckeditor4x
1.1. 与Joomla_3.4.7整合-ck4 示例下载:Joomla_3.4.7, 1.1.1. 添加screencapture文件夹 路径:/media/screencapture 1. ...
- 淘宝IP地址库采集器c#
个人原创.欢迎转载.转载请注明出处.http://www.cnblogs.com/zetee/articles/3482085.html 采集器概貌,如下: 最近做一个项目,功能类似于CNZZ站长统计 ...
- 风尘浪子 只要肯努力,梦想总有一天会实现 WF工作流与Web服务的相互调用 —— 通过Web服务调用Workflow工作流(开发持久化工作流) _转
如果你曾经负责开发企业ERP系统或者OA系统,工作流对你来说一定并不陌生.工作流(Workflow)是对工作流程及其各操作步骤之间业务规则 的抽象.概括.描述.工作流要解决的主要问题是:为实现某个业务 ...
- MySQL如何查看连接数和状态
查看连接数 命令:show processlist 如果要是root账号,能够看见当前所有用户的连接.如果是普通账号,只能看到自己占用的连接数. show processlist只能是列出前100 ...
- airpods2代连接macbook失败
更新至最新系统(10.14.4),更新完毕,重启电脑再次连接即可. 参考连接: http://dq.tieba.com/p/6082366443
- Android-AndroidStudio Run 'app'安装APK到设备的过程
1.AndroidStudio 点击Run ‘app’. 2.点击Run ‘app’就会将所有.class文件用SDK工具集处理成.dex, 用SDK工具集将图片/资源/布局文件/AndroidMan ...
- Windows上编译libjpeg
通常libjpeg可以使用如下命令行生成Visual Studio 2010的项目文件: nmake /f makefile.vc setup-v10 但可惜我们使用的是Visual Studio 2 ...