java代码实现递归查询树型分类数据

目录

1.准备分类数据

2.实现

总结

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,所以没有选择。

猜你喜欢

转载自blog.csdn.net/weixin_58403235/article/details/129639020
今日推荐