
2:如上图的结构 查询如下:
public List<CategoryListVO> getCategoryListVO(){
List<MallCategory> mallCategories = mallCategoryMapper.selectList(new QueryWrapper<MallCategory>().lambda().eq(MallCategory::getInvalid,0));
Map<Long,List<MallCategory>> map = new HashMap<>();
if(mallCategories==null||mallCategories.size()<1){
return null;
}
for (MallCategory mallCategory:mallCategories) {
if(!map.containsKey(mallCategory.getParentId())){
List<MallCategory> list = new ArrayList<>();
list.add(mallCategory);
map.put(mallCategory.getParentId(),list);
}else{
map.get(mallCategory.getParentId()).add(mallCategory);
}
}
return createChildMenu(0l, map);
}
private List<CategoryListVO> createChildMenu(Long pid, Map<Long, List<MallCategory>> map) {
if(!map.containsKey(pid)){
return null;
}
List<MallCategory> list = map.get(pid);
Collections.sort(list,(a, b)->(a.getSort() - b.getSort()));
//输出
List<CategoryListVO> allCategory = new ArrayList<>();
for(MallCategory m : list){
CategoryListVO categoryListVO = new CategoryListVO();
categoryListVO.setId(m.getId());
categoryListVO.setName(m.getName());
categoryListVO.setParentId(m.getParentId());
allCategory .add(categoryListVO);
List<CategoryListVO> ll = createChildMenu(m.getId(),map);
if(!CollectionUtils.isEmpty(ll)) {
categoryListVO.setChildren(ll);
}
}
return allCategory;
}
本文介绍了一种使用Java实现的商城商品分类结构查询方法,通过递归遍历数据库中所有商品分类,构建出树形结构的分类列表。此方法首先从数据库获取所有有效分类,然后按父ID分组,最后调用递归方法创建带有子菜单的分类列表。
1903

被折叠的 条评论
为什么被折叠?



