mybatisplus查询所有数据_Java8新特性递归查询菜单列表

首先在实体类创建一个对象

/*  * 保存子分类用的  * */  @TableField(exist=false)//声明不是数据库里面的,用来存父级数据的子数据  private List<CategoryEntity> children;  
查询出所有的菜单,配合mybatisplus查询mysql数据库的.selectList方法,参数没有写“null”
 @Override    public List listWithTree() {        //1.查出所有分类        List entities = baseMapper.selectList(null);        //2.组装成父子的树形结构        //2.1找到所有一级分类        List level1Menus = entities.stream().filter(categoryEntity ->categoryEntity.getParentCid() == 0        ).map((menu)->{menu.setChildren(getChikdrens(menu,entities));return menu;}) //映射到子级                .sorted((menu1,menu2)->{return menu1.getSort()-menu2.getSort();}).//排序                        collect(Collectors.toList());//收集起来返回        return level1Menus;    }    

开始递归查询

//递归查询所有菜单的子菜单    private List getChikdrens(CategoryEntity root, List all) {        List children = all.stream().filter(categoryEntity -> {            return categoryEntity.getParentCid() == root.getCatId();//筛选所有数据,当前得父级id=root.getcatid 就说明当前菜单就是他的子菜单        }).map(categoryEntity -> {            categoryEntity.setChildren(getChikdrens(categoryEntity,all));//拿到筛选出来的子菜单,和全部得菜单两个参数            return categoryEntity;//收集出来得子菜单中可能还有子菜单,所以还要map一个个拿出来继续操作        }).sorted((menu1,menu2)->{return (menu1.getSort()==null?0:menu1.getSort())-(menu2.getSort()==null?0:menu2.getSort());}).//进行排序(可能为0的话 就会出现空指针)                collect(Collectors.toList());        return children;    }

表结构如下图

d0997ba21078953f81469c79b1ec88f1.png

查出来的结果

97e3ffd1a0d60d1eedae2e86d5f1f745.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值