博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
递归的方式创建菜单
阅读量:3960 次
发布时间:2019-05-24

本文共 1676 字,大约阅读时间需要 5 分钟。

//========================递归查询所有菜单================================================    //获取全部菜单    @Override    public List
queryAllMenuGuli() {
//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/

你可能感兴趣的文章
JMeter常用测试元件
查看>>
JMeter——使用技巧
查看>>
Hibernate 实体层设计--Table per subclass
查看>>
JavaScriptHelper之 observe_field
查看>>
JavaScriptHelper之 periodically_ajax_tag
查看>>
Ruby on Rails(ROR) 小结(一) 绑定controller and view
查看>>
Ruby on Rails(ROR) 小结(一) 通过Schema Migrations来创建数据表
查看>>
form表单post请求发送及回收
查看>>
confluence5.8.10 安装与破解
查看>>
Testlink使用文档
查看>>
Ruby on Rails(ROR) 实例开发之一 配置数据库Mysql
查看>>
Ruby on Rails(ROR) 实例开发之一 创建开发项目环境
查看>>
Ruby on Rails(ROR) 实例开发之一 创建数据表
查看>>
Android_Note(一)——主题界面设计
查看>>
Android_Note(二)——主界面功能
查看>>
Android开发之——子线程中使用Toast或者更新UI
查看>>
Android开发之——消息模式Toast.makeText的常见用法
查看>>
Android开发之——assets目录下资源使用总结
查看>>
Android开发之——FilenameFilter文件过滤器
查看>>
Ruby on Rails(ROR) 实例开发之一 scaffold创建框架
查看>>