java 三级菜单遍历

@Override
public List<YjztCity> getYjzt(){
List<YjztCity> yjztCities = yjztCityMapper.selectByExample(null); //先获取你想要在哪些菜单范围内搜索
List<YjztCity> rootMenus = new ArrayList<>();
for (YjztCity menu : yjztCities) {
//从最上级菜单开始展示
if(menu.getType().equals("2")){
rootMenus.add(menu);
}
}
for (YjztCity rootMenu : rootMenus) {
//把最上级菜单的子菜单获取到,子菜单的子菜单也会获取到(目前是三层,由于是递归调用,100层也没问题)
List<YjztCity> child = getChild(rootMenu.getZfwqydm(), yjztCities);
rootMenu.setChildren(child);
}
return rootMenus;
} private List<YjztCity> getChild(String id,List<YjztCity> menus){
List<YjztCity> childList = new ArrayList<>();
for (YjztCity menu : menus) {
if(menu.getZfwsjqydm().equals(id)){
//当菜单范围内的父id等于传入的id,获取该id的所有子列表
childList.add(menu);
}
}
for (YjztCity menu : childList) {
//当上面循环语句查询不到子菜单,长度为0,自然也就不会递归调用了
//将该id的子菜单便利,通过递归调用,给每一个子菜单赋值子菜单
List<YjztCity> child = getChild(menu.getZfwqydm(), menus);
menu.setChildren(child);
}
if(childList.size()==0){
//子菜单的长度为0,返回null,null不会被jackson解析
return null;
}
return childList;
}

  

数据库设计

最新文章

  1. 参加微软Ignite大会有感
  2. C#编程总结 dynamic(转)
  3. ExtJS组件的xtype属性列表
  4. [swustoj 1088] 德州扑克
  5. linux rman shell
  6. 一天一个类,一点也不累 之 Set接口
  7. Linux下利用nc命令来监控检测服务器的端口使用情况(转载)
  8. 解决mydql执行sql文件时报Error: Unknown storage engine &#39;InnoDB&#39;的错误。
  9. 如何让Vim成为我们的神器
  10. linux根据端口号查询来源程序
  11. [HDU2296]Ring
  12. k8s实战为aspnetcore.webapi微服务注入配置信息 - kubernetes
  13. 使用opencv调用24*24点阵字库和8*16ASCII字库在图片显示文字数字
  14. 学会这15点,让你分分钟拿下Redis数据库
  15. composer的安装方法
  16. Hibernate报错,关于配置的SessionFactory找不到问题
  17. TPS和QPS 并发量区别;日活 访问量 活跃度
  18. 学习php
  19. ace-socket-reconnect
  20. 小学四则运算APP 第二次冲刺 第四天

热门文章

  1. Vue中qrcode的使用方法(生成二维码插件) / 前端页面根据URL链接生成二维码
  2. Spring全家桶(一)之Spring总结
  3. 第4关—input()函数
  4. 1、docker 安装
  5. git仓库搭建及免密使用
  6. GET请求数据量大造成的问题
  7. css animation 复刻
  8. 1构建NTP时间服务器
  9. Centos 7 环境 安装todesk异常
  10. Linux_CMD_FOR_OS_INFO