java递归树形菜单显示
今天写权限整好涉及到一些菜单的显示,最先想到的是递归遍历输出,但是呢在网上找了很多有关的资料没有符合自己需求的所以就自己写了一个,如果觉得靠谱
请点点关注!!!赞一个
首先看一些设计的数据库设计
菜单的id menuId
菜单的名称 menuName
菜单的地址 url
菜单的父级别 parent
菜单的编码 menuCode
比较简单的设计:
闲话不多说直接上代码
实体类 如下:
此处省略 GET ()SET()方法
注意:
这里多了个 childrs集合 因为我们要进行递归遍历 把每个菜单的子元素都显示出来 根据自己的需求选好集合我用的是List如果你希望唯一就用set集合
这里采用List
接下来我们来看递归部分如下:
简单的几行代码就完成的递归的遍历所有菜单的 每个菜单又会携带自己的子子孙孙菜单的 这样的结果是你想到要的么????
接下来我们来解释一下这些代码的意义
menuMapper.conditionleveMenu(menu.getMenuId());
第一次进来,获取的是当前的一级元素
然后把一级元素放入我当前菜单的子元素中
因为:我的子元素的下面很有可能还有子元素 所以我又把上面的集合元素循环的进行的遍历
for(Menu men : list){
然后这里采用的是递归的算法 recursion(menu)传入当前的菜单
}
这个方法主要做了几件事
1查询当前菜单下面的所有子元素菜单
2如果有子元素菜单 添加到当前菜单的子元素集合中
添加完毕 我们要考虑的是万一子元素集合下面还有菜单元素怎么办
所以进行了遍历
3循环遍历子元素集合进行重复操作 放入菜单 然后进入方法
1查询当前菜单下面的所有子元素
2如果有子元素菜单 添加到当期那菜单的子元素集合中
3循环遍历子元素集合进行进行重复操作.......同上
直到循环完毕
主要代码 就是这些 最重要的是实现了这个功能 细节留给你们开阔大脑去想把!!嘿嘿 关于本文有什么问题可以在下面留言交流,如果您觉得本文对您有帮助,可以点击下面的 推荐
支持一下我,博客一直在更新,欢迎 关注
。
java递归树形菜单显示的更多相关文章
- java构建树形菜单递归工具类
1.设计菜单实体 import java.util.List; public class Menu { //菜单id private Long id; //父节点id private Long par ...
- java 递归 树形
//菜单树形结构 public JSONArray treeMenuList(JSONArray menuList, int parentId) { JSONArray childMenu = new ...
- java递归构建菜单树
package testSimple; import java.util.ArrayList; import java.util.List; public class BuildTree { publ ...
- c# 递归树形菜单
首先创建模型类Menus public class Menus { //菜单Id public int Id { get; set; } //菜单名 public string MenuName { ...
- java后端树形菜单使用递归方法
数据库的设计 使用ssm 实体类 mapper映射文件查询出所有的菜单 使用递归方法
- 用dtree实现树形菜单 dtree使用说明
http://www.jb51.net/article/28566.htm 准备工作: 请从脚本之家http://www.jb51.net/jiaoben/31974.html下载dtree.zip文 ...
- Vue.js 递归组件实现树形菜单
最近看了 Vue.js 的递归组件,实现了一个最基本的树形菜单. 项目结构: main.js 作为入口,很简单: import Vue from 'vue' Vue.config.debug = tr ...
- java树形菜单实现
java树形菜单实现 公司表: 部门表: 实体类: public class Node { private Integer companyId;//公司id private String compan ...
- 用Vue.js递归组件构建一个可折叠的树形菜单
在Vue.js中一个递归组件调用的是其本身,如: Vue.component('recursive-component', { template: `<!--Invoking myself! ...
随机推荐
- jsp读取后台数据乱码
jsp读取后台数据乱码,如图所示: tomcat编码格式与项目不一致,找到config/server.xml修改为UTF-8 <Connector URIEncoding="UTF-8 ...
- OpenCV 亚像素级的角点检测
#include "opencv2/highgui/highgui.hpp" #include "opencv2/imgproc/imgproc.hpp" #i ...
- 如果你有一个域名,你也可以免费有一个diy@yourdomain.com的企业邮局
如果你有一个域名,例如:www.bengou.net那么你可以拥有一个免费邮箱:lajiyoujian@bengou.net.那么什么是企业邮局呢?有啥优点 企业邮局是指以您的域名作为后缀的电子邮件地 ...
- ffmpeg直播系统
1.HLS协议 http live streaming 将本地文件或者摄像头视频转成hls流文件 https://www.ffmpeg.org/ffmpeg-all.html#hls-2 2.rtmp ...
- baidumap 百度地图,实现多点之间的带方向路线图。
通过lastVisitAt判断时间先后. 通过三角函数验证角度 再由baidumap 会制线段 绘制三角箭头 比较难看…… 测试个人 因为框架引用baidu 有各种问题失败,为最快实现,以此页作一个独 ...
- Spring 中的 JDBCTemplate
新建一个java工程 写好spring配置文件,直接上代码 <?xml version="1.0" encoding="UTF-8"?> <b ...
- SQL语言基础及数据库的创建
一.数据类型:1.二进制数据二进制数据以十六进制形式存储.二进制数据最多能存8000个英文字符,4000个汉字字符. 2.字符数据char:存100,不足100补足.varcha:存多少占多少. 3. ...
- JavaScript常见排序算法
1.冒泡排序 function bubble_sort(arr) { if (arr.length <= 1) { return arr; } var len = arr.length; for ...
- idea如何打包项目(java)
1.右击项目打开open module settings 2.依次打开 3.选择你的程序主入口 JAR files from libraies ①和设置库中的jar文件选择第一个打包时会把依赖库(li ...
- Python---12函数式编程------12.3匿名函数&装饰器&偏函数
一.匿名函数 当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便. 在Python中,对匿名函数提供了有限支持.还是以map()函数为例,计算f(x)=x2时,除了定义一个f( ...