/** * 獲取父類別下面的所有子類別 * @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); }
這種方法只能適用於數據量比較少的,如果數據量很大,這種查詢方式會非常慢,慎用