java树形菜单实现

公司表:

部门表:

实体类:

public class Node {
private Integer companyId;//公司id
private String companyName;//公司名字
private Integer departId;//部门id
private String parentId;
private String departName;//部门名字
private List<Node> children; //父节点的子类 get/set.............
}

树形节点工具类:

package com.dengwei.day01springboot.utils;

import com.dengwei.day01springboot.model.Node;

import java.util.ArrayList;
import java.util.List; /**
* @Author
* @ClassName TreeUtile
* @Description TODO
* @Date 2018/10/30 0030 下午 11:29
* @Version 1.0
*/
public class TreeUtile {
/**
* @Author
* @Description //TODO
* @Date 2018/10/31 0031 上午 12:02
* @Param nodes :所有的节点列表
* @return
*/
public List data(List<Node> nodes) {
ArrayList<Node> rootNode = new ArrayList<>();
for(Node node:nodes){
if(node.getParentId().equals("0")){
rootNode.add(node);
}
}
for(Node node:rootNode){
List<Node> child = getChild(String.valueOf(node.getDepartId()), nodes);
node.setChildren(child);
}
return rootNode;
} /**
* @return
* @Author
* @Description //TODO 获取根节点的子节点
* @Date 2018/10/30 0030 下午 11:37
* @Param
*/
public List<Node> getChild(String id, List<Node> allNode) {
//存放子菜单的集合
ArrayList<Node> listChild = new ArrayList<>();
for (Node node : allNode) {
if (node.getParentId().equals(id)) {
listChild.add(node);
}
}
//递归:
for (Node node : listChild) {
node.setChildren(getChild(String.valueOf(node.getDepartId()), allNode));
}
if (listChild.size() == 0) {
return null;
}
return listChild;
}
}

controller使用:

dao:

mapper:

java树形菜单实现的更多相关文章

  1. java构建树形菜单递归工具类

    1.设计菜单实体 import java.util.List; public class Menu { //菜单id private Long id; //父节点id private Long par ...

  2. java 传入list集合 返回树形菜单,for循环遍历

    public List<SysPermissionVO> getTreeMenu(List<SysPermissionVO> list,SysPermissionVO sysP ...

  3. WEB开发中前后台树形菜单的展示设计

    在WEB开发中经常需要进行树形菜单的展示,本例通过不同角度的总结了如下三种实现方式: 通过JS的递归实现前端菜单DOM的动态创建 通过JSP的include指令结合JSTL表达式语言递归实现菜单的展示 ...

  4. jquery easy ui 1.3.4 Tree树形菜单(9)

    9.1.创建树形菜单 <ul id="tt" class="easyui-tree"> <li><span>第一级</ ...

  5. Android 多级树形菜单

    在Android里要实现树形菜单,都是用ExpandableList(也有高手自己继承ListView或者LinearLayout来做),但是ExpandableList一般只能实现2级树形菜单... ...

  6. SpringMVC+ZTree实现树形菜单权限配置

    计划在开源项目里加入权限配置的功能,打算加入zTree实现树形结构. Team的Github开源项目链接:https://github.com/u014427391/jeeplatform 欢迎sta ...

  7. zTree树形菜单交互选项卡效果实现

    1. 添加自定义属性 page 2. 为 ztree 每个树形节点,添加点击事件 <!DOCTYPE html> <html> <head> <meta ch ...

  8. zTree树形菜单使用实例

    在每个节点添加 id 和 pid, id 表示当前节点编号,pid 表示父节点编号 第一步:在页面显示菜单位置,添加 ul设置 class=”ztree” 第二步:开启简单数据格式支持 第三步:编写树 ...

  9. dtree实现动态加载树形菜单,动态插入树形菜单

    1.导入  dtree文件    dtree.css   img文件夹   dtree.js 2. 建立对应 的数据库      1      父ID     name    id 3    建立连接 ...

随机推荐

  1. Too many open files问题解决

    项目运行过程出现如下问题 经查询,找出原因,并进行解决 具体原因如下: too many open files(打开的文件过多)是Linux系统中常见的错误,从字面意思上看就是说程序打开的文件数过多, ...

  2. 打印进度条>>>>

    i+1: 当前的数量 300:  总数量 import sys print("下载中...") def process(curr, count): cursor_count = c ...

  3. supervisor管理php-fpm

    /etc/php-fpm.conf,设置daemonize = no,默认是yes

  4. npm:Fatal error in , line 0 #unreachable code 解决

    是nodejs环境本身的问题,下载nodejs执行repair即可

  5. AQS框架源码分析-AbstractQueuedSynchronizer

    前言:AQS框架在J.U.C中的地位不言而喻,可以说没有AQS就没有J.U.C包,可见其重要性,因此有必要对其原理进行详细深入的理解. 1.AQS是什么 在深入AQS之前,首先我们要搞清楚什么是AQS ...

  6. Ubuntu 18.04.1 下快速搭建 LNMP环境

    1.Nginx的安装 Nginx安装是属于最简单的,只需要在命令行执行 sudo apt-get install nginx 就能自动安装 Nginx,其中过程中需要 选择 Y/n 的选择Y就行了,当 ...

  7. Linux 进入 5.0 时代!

    Linux 进入 5.0 时代! 为什么 Linux 4.2 之后的版本不再是 4.21 而是 5.0? 如果你非要一个理由,那就是因为 Linux 4.x 的版本如今用手指与脚趾加在一起都要数不过来 ...

  8. 10-ajax技术简介

    一.ajax是什么?是网页中的异步刷新技术.其核心是js+xml二.执行过程1.js的核心对象XMLHttpRequest是一个具备像后台发送请求的一个对象2.XMLHttpRequest可以异步发送 ...

  9. future builder

    import 'package:flutter/material.dart';import 'dart:convert';import 'package:http/http.dart' as http ...

  10. [转帖]SAP S4 HANA 1610与ECC的比较

    SAP S4 HANA 1610与ECC的比较 https://zhuanlan.zhihu.com/p/27266476 SAP S4 HANA是下一代的ERP套件,是SAP 战略的核心,相关资料也 ...