1. 实现思路
先查出一级目录 -> 查出子目录,一直到查到的是null (由外向内查找)
文档要求
1.1 数据类型设置
根据文档要求,显示回前端的data数据包含了字段id、parentId、name、sortOrder、subCategories
vo.CategoryVo.java
@Data
public class CategoryVo {
private Integer id;
private Integer parentId;
private String name;
private Integer sortOrder;
private List<CategoryVo> subCategories;
}
1.2 显示所有的根目录类别数据
ICategoryService.java
public interface ICategoryService {
ResponseVo<List<CategoryVo>> selectAll();
}
CategoryServiceImpl.java
@Service
public class CategoryServiceImpl implements ICategoryService {
@Autowired
private CategoryMapper categoryMapper;
@Override
public ResponseVo<List<CategoryVo>> selectAll() {
// 返回给前端的列表信息
List<CategoryVo> categoryVoList = new ArrayList<>();
// 一次性查找出所有的类别信息
List<Category> categories = categoryMapper.selectAll();
// 查出parent_id=0
for (Category category : categories) {
if(category.getParentId().equals(MallConst.ROOT_PARENT_ID)) {
CategoryVo categoryVo = new CategoryVo();
// 将查到的根目录类别信息转换为categoryVo类
BeanUtils.copyProperties(category, categoryVo);
categoryVoList.add(categoryVo);
}
}
return ResponseVo.success(categoryVoList);
}
}
上面的写法也可以写成Lambda
写法
@Service
public class CategoryServiceImpl implements ICatego