开发者学堂课程【微服务+全栈在线教育实战项目演练(SpringCloud Alibaba+SpringBoot):权限管理-查询所有菜单(递归)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/667/detail/11528
权限管理-查询所有菜单(递归)
目录:
一、代码启动
二、核心代码
三、检测
一、代码启动
启动项目,打开 serviceAcl,将以下服务启动起来:
package com.atguigu.aclservice;
import ...
@SpringBootApplication
@EnableDiscoveryClient
ComponentScan("com.atguigu"
@MapperScan("com.atguigu.aclservice. mapper"
public class ServiceAclApplication (
public static void main(String[] args) ( SpringApplication.run(ServiceAclApplication.clasg
启动之后,进行测试,看看最终能否得到树形结构的菜单效果。
使用 swagger 进行测试,端口号为8009,
搜索:
http://localhost:8009/swagger-ui.html#/permission45controller
,会发现有一行代码需要注释掉,就是这行代码:
package com.atguigu.aclservice;
import...
@SpringBootApplication
@EnableDiscoveryClient
@ComponentScan("com atguigu
@MapperScan("com. atguigu.aclservice. mapper
public class ServiceAclApplication (
public static void main(String[] args) (SpringApplication.run(ServiceAclApplication.class, ars
这个代码它表示如果路径中包含这个路径,接口是不会显示的,如果这句话没被注释掉,它的接口就不会显示,解决方案是修改名字,或者注释掉,否则将没有信息显示。
二、核心代码
//把返回所有菜单 list 集合进行封装的方法public static List<Permission〉 bulidPermission (List<Permission> permissionList){
//创建 list 集合,用于数据最终封装 List<Permission> finalNode = new ArrayList< >():
//把所有菜单list集合遍历,得到顶层菜单 pid=0菜单,设置 level 是1
for(Permission permissionNode : permissionList)(
//得到顶层菜单 pid=0菜单
if("o [equals(permissionNode.getPid()))(
//设置顶层菜单的 level 是1
permissionNode.setLevel(1);
//根据顶层菜单,向里面进行查询子菜单,封装到finalNode里面finalNode.add(selectChildren(permissionNode,permissionList));
三、检测
用最一开始的方法,第一次比较便利,通过一级查二级,通过二级查三级,什么三级查四级类推,直到它最终没有数据。此时递归查询菜单就完成了。