单表,数据有层级,通过parentId关联
先需要获取层级树类型的数据,但不想多次查询,需要减少查询sql次数
1.单表查询所有有效数据
2.逻辑层处理成树结构
public List<CheckVo> fun(){
List<CheckVo> result = new ArrayList<>();
// 查询 所有有效的数据
List<CheckPo> checkPoList = super.getBaseMapper().selectList(Wrappers.<CheckPo>lambdaQuery()
.eq(CheckPo::getStatus, StatusEnum.VALID.getValue()));
List<CheckVo> checkVoList = CheckBeanConvertUtil.INSTANCE.getCheckVo(checkPoList);
if(CollUtil.isNotEmpty(checkVoList)){
result = checkVoList.stream().filter(item->item.getParentId()==null)
.map(item->{
item.setChildren(getChildren(item,checkVoList));
return item;
}).collect(Collectors.toList());
}
return result;
}
// 递归方法
private List<CheckVo> getChildren(CheckVo vo,List<CheckVo> checkVoList){
return checkVoList.stream()
.filter(item->item.getParentId()!=null && item.getParentId().equals(vo.getId()))
.map(item->{
item.setChildren(getChildren(item,checkVoList));
return item;
}).collect(Collectors.toList());
}