JAVA查询类别(菜单)下的所有子类别(递归)

/**
     * 获取父类别下面的所有子类别
     * @return List<StoreGoodsCate> 返回当前类别下的所有子类别集合
     */
    public List<StoreGoodsCate> getCateNode(List<StoreGoodsCate> storeGoodsCates){
        List<StoreGoodsCate> newCateIdNode = new ArrayList<>();
        for(StoreGoodsCate cate: storeGoodsCates){
            if(getCateChildren(cate).size() != 0){
                //还有子类别,递归查询所有子类别
                newCateIdNode.addAll(getCateNode(getCateChildren(cate)));
            }else{
                //没有子类别,把当前节点添加到集合中
                newCateIdNode.add(cate);
            }
        }
        return newCateIdNode;
    }

    /**
     * 查询当前类别的子类别集合
     *  这里根据自己实际项目方法即可
     * @param storeGoodsCate
     * @return
     */
    public List<StoreGoodsCate> getCateChildren(StoreGoodsCate storeGoodsCate){
        QueryWrapper<StoreGoodsCate> queryWrapper = new QueryWrapper<StoreGoodsCate>()
                .eq("pid", storeGoodsCate.getId())
                .eq("is_deleted", 0);
       return cateService.list(queryWrapper);
    }

这种方法只能适用于数据量比较少的,如果数据量很大,这种查询方式会非常慢,慎用

-----------------------有任何问题可以在评论区评论,也可以私信我,我看到的话会进行回复,欢迎大家指教------------------------ (蓝奏云官网有些地址失效了,需要把请求地址lanzous改成lanzoux才可以)
原文地址:https://www.cnblogs.com/pxblog/p/14517634.html