目录
1.准备分类数据
分类数据请看上一篇
https://blog.csdn.net/weixin_58403235/article/details/129635380
2.实现
代码如下(示例):
@Autowired
CourseMapper courseMapper;
@Override
//递归查询数据
public List<Course> selectTree(){
//获取所有课程数据,避免循环查表 消耗大量资源
List<Course> list = courseMapper.selectList(null);
List<Course> collect = list.stream()
//filter有几个匹配的就有几个列表元素
.filter(item -> item.getParentId().equals("0"))
.map(menu -> {
menu.setCourseList(getChildren(menu, list));
return menu;
}).collect(Collectors.toList());
return collect;
}
private List<Course> getChildren(Course root, List<Course> list) {
List<Course> chirden = list.stream()
.filter(item -> item.getParentId().equals(root.getId()))
.map(menu -> {
menu.setCourseList(getChildren(menu, list));
return menu;
}).collect(Collectors.toList());
return chirden;
}
测试:
@Test
void testCourseService() {
List<Course> courses = courseService.selectTree();
//因为ParentCid为0的只有一个 所以该列表下只有一个元素
Course course = courses.get(0);
System.out.println(course);
}
结果如图:
扫描二维码关注公众号,回复:
15826495 查看本文章
总结
本章实现java方式递归操作查询树型分类数据,其实还可以循环查表的方式获得分类数据,但循环查表效率太低不够wow,所以没有选择。