需求:

  假如有几个一级菜单,一级菜单下面有几个二级菜单,二级菜单下又还有三级菜单。现在要求一级菜单里面的几个设置为无效,将不显示在前端。现在需要的是查询出一级菜单下面所有的菜单,包括二级,三级菜单

原则:

  在菜单表中包括自己的id和父节点的parentId

代码:

 public List<Map> getAllMappings(){
//从数据库查出需要设置为无效的一级菜单,每个Map包含id,parentId,name等字段
4 List<Map> notActiveMenus = (List<Map>)getMenuDao().search();
      //初始化存储所有无效的菜单的List
List<String> notActiveIds = new ArrayList<String>();
      //循环每一个一级菜单
for (Map notActiveMenu:notActiveMenus){
notActiveIds.add((String)notActiveMenu.get("id"));
        //遍历下级目录
searchSubNotActiveMenu(notActiveIds, (String) notActiveMenu.get("id"));
}
      //去重
List<String> temp = new ArrayList<String>();
Iterator<String> it = notActiveIds.iterator();
while(it.hasNext()){
String tempString = it.next();
if(temp.contains(tempString)){
it.remove();
}else {
temp.add(tempString);
}
} return notActiveIds;
} public void searchSubNotActiveMenu(List<String> notActiveIds,String parentId){
//将上级目录的id作为父节点查询child菜单
       List<Map> datas = (List<Map>)getMenuDao().search(parentId);
if (datas!=null&&datas.size()>0){
for (Map data:datas){
notActiveIds.add((String)data.get("id"));
searchSubNotActiveMenu(notActiveIds,(String)data.get("id"));
}
}
}

java查询几个菜单下的所有下级菜单的更多相关文章

  1. Java查询大文本

    但JAVA本身缺少相应的类库,需要硬编码才能实现结构化文件计算,代码复杂且可读性差,难以实现高效的并行处理. 使用免费的集算器可以弥补这一不足.集算器封装了丰富的结构化文件读写和游标计算函数,书写简单 ...

  2. Windows下给鼠标右键菜单添加获得完全控制权限的菜单项

    这段时间计算机C分区里多了很多无用的文件,而且不在同一个目录下,搜索出来删除的时候提示没有管理员权限,需要在右键属性里面修改,非常麻烦,于是查询了一下发现可以在文件右键菜单添加一个获取权限的菜单项,这 ...

  3. java 查询路径中所有文件夹和文件的名称,支持文件名模糊查询

    java 查询路径中所有文件夹和文件的名称,支持文件名模糊查询 有时候我们遇到需要查询服务器或者本机某个路径下有哪些文件?或者根据文件名称模糊搜索文件,那么就可以使用本方法:可以获取某个路径下所有文件 ...

  4. Java面试题全集(下)转载

    Java面试题全集(下)   这部分主要是开源Java EE框架方面的内容,包括hibernate.MyBatis.spring.Spring MVC等,由于Struts 2已经是明日黄花,在这里就不 ...

  5. Android实现下拉导航选择菜单效果

    本文介绍在Android中如何实现下拉导航选择菜单效果.   关于下拉导航选择菜单效果在新闻客户端中用的比较多,当然也可以用在其他的项目中,这样可以很方便的选择更多的菜单.我们可以让我们的应用顶部有左 ...

  6. Java面试题全集(下)

    这部分主要是开源Java EE框架方面的内容,包括hibernate.MyBatis.spring.Spring MVC等,由于Struts 2已经是明日黄花,在这里就不讨论Struts 2的面试题, ...

  7. VUE Node模式下,如何改变菜单的颜色,如何将超长文字缩略显示,在鼠标进入后展开全部显示,鼠标移出则恢复缩略显示

    VUE Node模式下,如何改变菜单的颜色,如何将超长文字缩略显示,在鼠标进入后展开全部显示,鼠标移出则恢复缩略显示: “事件”引起变量值的变化,系统引擎自动根据变量值的变化刷新页面 在VUE Nod ...

  8. WIN 下的超动态菜单(三)代码

    WIN 下的超动态菜单(一)简介 WIN 下的超动态菜单(二)用法 WIN 下的超动态菜单(三)代码 作者:黄山松,发表于博客园:http://www.cnblogs.com/tomview/ 超动态 ...

  9. eclipse安装ADT后在windows菜单下找不到android SDK and AVD Manager

    eclipse安装ADT后在windows菜单下找不到android SDK and AVD Manager选项的解决办法 - zhjr1220的专栏 - 博客频道 - CSDN.NET  http: ...

随机推荐

  1. JavaScript实现限时抢购实例

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  2. BZOJ 3171 循环格 最小费用流

    题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=3171 题目大意: 一个循环格就是一个矩阵,其中所有元素为箭头,指向相邻四个格子.每个元 ...

  3. python第二课——数据类型1

    day02(上午)主要讲了进制问题,小编之前已经发过了 day02(下午): 1.数据类型: 分类: 1).整数型:int浮点型(小数):float布尔型(True/False):bool 2).字符 ...

  4. S1 商品信息管理系统

    #include <iostream> #include <cstdio> #include <cstdlib> #include <iomanip> ...

  5. Python中的赋值和拷贝

    赋值 在python中,赋值就是建立一个对象的引用,而不是将对象存储为另一个副本.比如: >>> a=[1,2,3] >>> b=a >>> c= ...

  6. JedisPool无法获得资源问题

    线上碰到一个问题:redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the ...

  7. django CBV模式下如何去掉csrf验证

    方式一:from django.views.decorators.csrf import csrf_exemptfrom django.utils.decorators import method_d ...

  8. Docker+Kubernetes(k8s)微服务容器化实践

    第1章 初识微服务微服务的入门,我们从传统的单体架构入手,看看在什么样的环境和需求下一步步走到微服务的,然后再具体了解一下什么才是微服务,让大家对微服务的概念有深入的理解.然后我们一起画一个微服务的架 ...

  9. liunx 安装maven

    cd /usr/local mkdir maven cd /usr/local/maven wget https://archive.apache.org/dist/maven/maven-3/3.1 ...

  10. vbs获取当前主机IP

    Function GetIP GetIP = ""        Dim objWMIService, colAdapters, objAdapter    strComputer ...