递归展示用户端商品分类列表的层级关系
自定义列表实体类
添加属性:
private List<CategoryVO> childCategory = new ArrayList<>();
service层递归调用
父亲id从0开始。。。
递归调用就是指定当前商品id为父id,以当前商品的List<CategoryVO> childCategory
属性字段存储寻找的子目录。。。
@Override
// @Cacheable(value = "listCategoryForCustomer")
public List<CategoryVO> listCategoryForCustomer() {
ArrayList<CategoryVO> categoryVOList = new ArrayList<>();
recursivelyFindCategories(categoryVOList, 0);
return categoryVOList;
}
private void recursivelyFindCategories(List<CategoryVO> categoryVOList, Integer parentId) {
//递归获取所有子类别,并组合成为一个“目录树”
List<Category> categoryList = categoryMapper.selectCategoriesByParentId(parentId);
if (!CollectionUtils.isEmpty(categoryList)) {
for (int i = 0; i < categoryList.size(); i++) {
Category category = categoryList.get(i);
CategoryVO categoryVO = new CategoryVO();
BeanUtils.copyProperties(category, categoryVO);
categoryVOList.add(categoryVO);
recursivelyFindCategories(categoryVO.getChildCategory(), categoryVO.getId());
}
}
}
selectCategoriesByParentId的mapper就是找符合指定父id的所有商品
其中
BeanUtils.copyProperties(category, categoryVO);
复制category类的属性值到categoryVO属性值里面。
快速完成类之间属性的赋值