Tabla de contenido
1. Preparar datos de clasificación
Consulte el artículo anterior para conocer los datos de clasificación.
https://blog.csdn.net/weixin_58403235/article/details/129635380
2. Date cuenta
El código es el siguiente (ejemplo):
@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;
}
prueba:
@Test
void testCourseService() {
List<Course> courses = courseService.selectTree();
//因为ParentCid为0的只有一个 所以该列表下只有一个元素
Course course = courses.get(0);
System.out.println(course);
}
El resultado se muestra en la figura:
Resumir
En este capítulo, se implementa la operación recursiva del método java para consultar los datos de clasificación de tipo árbol. De hecho, los datos de clasificación también se pueden obtener mediante la búsqueda de tabla circular, pero la eficiencia de la búsqueda de tabla circular es demasiado baja para wow, por lo que no hay otra opción.