1.在domain实体类里面加上一个字段(前台需要的树状结构字段)
//这里前台需要的是children 类型的树状结构
private List<CourseType> children = new ArrayList<>();
2.在service层里面查询所有数据,然后进行拼接树状格式
public List<CourseType> treeData() {
//1.查询全部的数据
List<CourseType> courseTypes = baseMapper.selectList(null);
//2.准备父容器(用于装最外层的分类)
List<CourseType> maxCourseTypes = new ArrayList<>();
//3.判断是否是最外层的父分类,最后就返回的是这些父分类
for (CourseType courseType : courseTypes) {
//用字段pid为0来判断是否是最外层的父分类
if(courseType.getPid().longValue()==0){
//父分类
maxCourseTypes.add(courseType);
}else {
//子分类
//4.根据这个子分类的pid找到对应父分类,并将它装到对应的父分类里面
CourseType fatherCourseType = null;
//5.循环所有数据找到对应的父类并将它装到父容器里面
for (CourseType type : courseTypes) {
if(courseType.getPid().longValue()==type.getId().longValue()){
//这个是父类
fatherCourseType=type;
break;
}
}
//6.最后将这次循环的子分类装到父分类的children里面:前提是要里面有值(用的都是一个对象,所以五个最外层父容器里面就包含了对应的CourseType)
if(fatherCourseType!=null){
fatherCourseType.getChildren().add(courseType);
}
}
}
return maxCourseTypes;
}