本文共 1676 字,大约阅读时间需要 5 分钟。
//========================递归查询所有菜单================================================ //获取全部菜单 @Override public ListqueryAllMenuGuli() { //1 查询菜单表所有数据 QueryWrapper wrapper = new QueryWrapper<>(); wrapper.orderByDesc("id");//降序排列查询所有的菜单 List permissionList = baseMapper.selectList(wrapper); //2 把查询所有菜单list集合按照要求进行封装 List resultList = bulidPermission(permissionList); return resultList; } //把返回所有菜单list集合进行封装的方法 public static List bulidPermission(List permissionList) { //创建list集合,用于数据最终封装 List finalNode = new ArrayList<>(); //把所有菜单list集合遍历,得到顶层菜单 pid=0菜单,设置level是1 for(Permission permissionNode : permissionList) { //得到顶层菜单 pid=0菜单 if("0".equals(permissionNode.getPid())) { //设置顶层菜单的level是1 permissionNode.setLevel(1); //根据顶层菜单,向里面进行查询子菜单,封装到finalNode里面 根据顶层菜单查询他的子菜单 finalNode.add(selectChildren(permissionNode,permissionList)); } } return finalNode; } //返回的是当前菜单 ,并且在当前菜单中设置子菜单 permissionNode既是当前菜单 private static Permission selectChildren(Permission permissionNode, List permissionList) { //1 因为向一层菜单里面放二层菜单,二层里面还要放三层,把对象初始化 permissionNode.setChildren(new ArrayList ()); //2 遍历所有菜单list集合,进行判断比较,比较id和pid值是否相同 for(Permission it : permissionList) { //判断 id和pid值是否相同 if(permissionNode.getId().equals(it.getPid())) { //把父菜单的level值+1 int level = permissionNode.getLevel()+1; it.setLevel(level); //如果children为空,进行初始化操作 if(permissionNode.getChildren() == null) { permissionNode.setChildren(new ArrayList ()); } //把查询出来的子菜单放到父菜单里面 并且在子菜单中再次设置子菜单 permissionNode.getChildren().add(selectChildren(it,permissionList)); } } return permissionNode; }
转载地址:http://iahzi.baihongyu.com/