//serviceImpl,树形列表
@Override
public List<分类实体类> getTree() {
List<分类实体类> allList = baseMapper.selectList(null);
List<分类实体类> parentList = allList.stream()
//筛选有无父类id,无则是一级分类
.filter(item -> item.getParentId().equals("0"))
.map(item -> {
//需要在分类实体类添加List<分类实体类> children数组且保证不与表的字段冲突
item.setChildren(getChildren(item, allList));
return item;
})
.sorted((item1, item2) -> {
return item1.getSort() - item2.getSort(); //前者减后者排序为升序,反之降序
})
.collect(Collectors.toList());
return parentList ; //返回树形结构
}
//递归查询子分类
private List<分类实体类> getChildren(分类实体类 root, List<分类实体类> allList){
List<分类实体类> lastList = allList.stream()
//root父类筛选其对应的子类
.filter(item -> {return root.getId().equals(item.getParentId());})
.map(item -> {
item.setChildren(getChildren(item, allList));
return item;
})
.sorted((item1, item2) -> {
return (item1.getSort()==null?0:item1.getSort()) - (item2.getSort()==null?0:item2.getSort());
})
.collect(Collectors.toList());
return lastList;
}
分类实体类需添加的属性,保证父类获取子类且不与对应表的字段冲突
@JsonInclude(value = JsonInclude.Include.NON_EMPTY)
@TableField(exist = false)
private List<本类类名> children;