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