今天写权限整好涉及到一些菜单的显示,最先想到的是递归遍历输出,但是呢在网上找了很多有关的资料没有符合自己需求的所以就自己写了一个,如果觉得靠谱

请点点关注!!!赞一个

首先看一些设计的数据库设计

菜单的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递归树形菜单显示的更多相关文章

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

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

  2. java 递归 树形

    //菜单树形结构 public JSONArray treeMenuList(JSONArray menuList, int parentId) { JSONArray childMenu = new ...

  3. java递归构建菜单树

    package testSimple; import java.util.ArrayList; import java.util.List; public class BuildTree { publ ...

  4. c# 递归树形菜单

    首先创建模型类Menus public class Menus { //菜单Id public int Id { get; set; } //菜单名 public string MenuName { ...

  5. java后端树形菜单使用递归方法

    数据库的设计 使用ssm 实体类 mapper映射文件查询出所有的菜单 使用递归方法

  6. 用dtree实现树形菜单 dtree使用说明

    http://www.jb51.net/article/28566.htm 准备工作: 请从脚本之家http://www.jb51.net/jiaoben/31974.html下载dtree.zip文 ...

  7. Vue.js 递归组件实现树形菜单

    最近看了 Vue.js 的递归组件,实现了一个最基本的树形菜单. 项目结构: main.js 作为入口,很简单: import Vue from 'vue' Vue.config.debug = tr ...

  8. java树形菜单实现

    java树形菜单实现 公司表: 部门表: 实体类: public class Node { private Integer companyId;//公司id private String compan ...

  9. 用Vue.js递归组件构建一个可折叠的树形菜单

    在Vue.js中一个递归组件调用的是其本身,如: Vue.component('recursive-component', {   template: `<!--Invoking myself! ...

随机推荐

  1. 如何使用css伪类,实现div左上角出现封面等提示信息

     HTML <div class="ui-cover-tip”><div> CSS .ui-cover-tip{ position: relative; width: ...

  2. Linux挂载存储(供应商给的资料)

    infofile iqn.1994-05.com.redhat:16a2b8b7d8 infodb iqn.1994-05.com.redhat:8518efa2fe72 在iscsi server上 ...

  3. Pulsar、ZooKeeper、BookKeeper 作用简述

    Pulsar:采取了存储计算分离的技术ZooKeeper 集群的作用和在 Kafka 中是一样的,都是被用来存储元数据.BookKeeper 集群则被用来存储消息数据.BookKeeper 有点儿类似 ...

  4. 对Java8新的日期时间类的学习(一)

    引用自Java译站http://it.deepinmind.com/java/2015/03/17/20-examples-of-date-and-time-api-from-Java8.html 除 ...

  5. 【Linux_Shell 脚本编程学习笔记六、shell的数值运算】

    1.bc 命令的用法(可以整数也可以小数): bc是 UNIX下的计算器,它也可以用在命令行下面: 例: 给自变量 i 加 1 [root@docker Demo_test]# i= [root@do ...

  6. java 面向对象 购物车

    一个商城包括多个商品.多个用户.拥有销售商品.展示商品和查找商品功能.2)    一个用户拥有一个购物车,购物车具有结算功能.3)    商城具有名称,静态字符串类型4)    用户类是抽象类,两个子 ...

  7. linux中用户和用户组的概念以及查看命令

    Linux 是多用户多任务操作系统,换句话说,Linux 系统支持多个用户在同一时间内登陆,不同用户可以执行不同的任务,并且互不影响. 例如,某台 Linux 服务器上有 4 个用户,分别是 root ...

  8. 写个匹配某段html dom代码某属性的正则匹配方法

    private static string GetHtmlDomAttr(string html, string id, string attrname) { string xmatchstring ...

  9. 点击一个ul的五个li元素,分别弹出他们的序号,怎么做?

    方法1 : for(var i=0; i<oLis.length; i++){ oLis[i].onclick = (function(j){ return function(){ alert( ...

  10. Mysql数据导出到excel-基于python

    阅读本文大概需要 6分钟. 数据除了在测试平台显示,有时候也会习惯用excel以及邮件展示,那么我们可以在测试平台上加一个导出excel功能,方便操作,下面介绍主要代码以及逻辑. 使用操作数据库的py ...