递归查询 所有子课程

这里使用的是mybatis-plus进行查询数据,实体类中有一个 List<实体类> children 属性 存放顶级课程下的子课程,可根据自身需求进行修改。

parent_id为空则为顶级课程

public List<EduSubjectEntity> getAllSubjectTree() {
        //查询所有顶级课程
        QueryWrapper queryWrapper = new QueryWrapper();
        queryWrapper.eq("parent_id", "");
        List<EduSubjectEntity> list = eduSubjectService.list(queryWrapper);
        //根据顶级课程递归查询所有子课程
        getSubjectChild(list);
        return list;
    }

parent_id 为顶级课程的id 即是 顶级课程下的子课程

/**
     * 递归获取所有子课程
     * @param eduSubjectEntityList
     */
    private void getSubjectChild(List<EduSubjectEntity> eduSubjectEntityList){
        //存放子课程
        List<EduSubjectEntity> childrenList;
        for (EduSubjectEntity entity : eduSubjectEntityList) {
            QueryWrapper queryWrapper = new QueryWrapper();
            queryWrapper.eq("parent_id", entity.getId());
            childrenList = eduSubjectService.list(queryWrapper);
            if (childrenList.size() > 0){
                entity.setChildren(childrenList);
                getSubjectChild(childrenList); //循环调用自身
            }
        }
    }

数据库中数据为
在这里插入图片描述

最终实现效果为
在这里插入图片描述

调用接口返回的JSON数据为

{
  "success": true,
  "code": 200,
  "message": "成功",
  "data": {
    "rows": [
      {
        "id": "1293200126289928194",
        "title": "前端开发",
        "parentId": "",
        "sort": 0,
        "gmtCreate": "2020-08-11 22:58:31",
        "gmtModified": "2020-08-11 22:58:31",
        "children": [
          {
            "id": "1293200126319288322",
            "title": "vue",
            "parentId": "1293200126289928194",
            "sort": 0,
            "gmtCreate": "2020-08-11 22:58:31",
            "gmtModified": "2020-08-11 22:58:31",
            "children": [
              {
                "id": "1293200126319288323",
                "title": "vue 2.0",
                "parentId": "1293200126319288322",
                "sort": 0,
                "gmtCreate": "2020-08-11 22:58:31",
                "gmtModified": "2020-08-11 22:58:31",
                "children": [
                  {
                    "id": "1293200126319288325",
                    "title": "vue 2.5",
                    "parentId": "1293200126319288323",
                    "sort": 0,
                    "gmtCreate": "2020-08-11 22:58:31",
                    "gmtModified": "2020-08-11 22:58:31",
                    "children": null
                  }
                ]
              },
              {
                "id": "1293200126319288324",
                "title": "vue 3.0",
                "parentId": "1293200126319288322",
                "sort": 0,
                "gmtCreate": "2020-08-11 22:58:31",
                "gmtModified": "2020-08-11 22:58:31",
                "children": null
              }
            ]
          },
          {
            "id": "1293200126365425666",
            "title": "JavaScript",
            "parentId": "1293200126289928194",
            "sort": 0,
            "gmtCreate": "2020-08-11 22:58:31",
            "gmtModified": "2020-08-11 22:58:31",
            "children": null
          },
          {
            "id": "1293200126688387074",
            "title": "JQuery",
            "parentId": "1293200126289928194",
            "sort": 0,
            "gmtCreate": "2020-08-11 22:58:31",
            "gmtModified": "2020-08-11 22:58:31",
            "children": null
          }
        ]
      },
      {
        "id": "1293200126705164289",
        "title": "后端开发",
        "parentId": "",
        "sort": 0,
        "gmtCreate": "2020-08-11 22:58:31",
        "gmtModified": "2020-08-11 22:58:31",
        "children": [
          {
            "id": "1293200126730330114",
            "title": "java",
            "parentId": "1293200126705164289",
            "sort": 0,
            "gmtCreate": "2020-08-11 22:58:31",
            "gmtModified": "2020-08-11 22:58:31",
            "children": null
          },
          {
            "id": "1293200126772273153",
            "title": "c++",
            "parentId": "1293200126705164289",
            "sort": 0,
            "gmtCreate": "2020-08-11 22:58:31",
            "gmtModified": "2020-08-11 22:58:31",
            "children": null
          }
        ]
      },
      {
        "id": "1293200126793244674",
        "title": "数据库开发",
        "parentId": "",
        "sort": 0,
        "gmtCreate": "2020-08-11 22:58:31",
        "gmtModified": "2020-08-11 22:58:31",
        "children": [
          {
            "id": "1293200126810021889",
            "title": "mysql",
            "parentId": "1293200126793244674",
            "sort": 0,
            "gmtCreate": "2020-08-11 22:58:31",
            "gmtModified": "2020-08-11 22:58:31",
            "children": null
          }
        ]
      },
      {
        "id": "1500724268931063810",
        "title": "运维",
        "parentId": "",
        "sort": 0,
        "gmtCreate": "2022-03-07 14:45:22",
        "gmtModified": null,
        "children": [
          {
            "id": "1500724269065281537",
            "title": "WindowsServer",
            "parentId": "1500724268931063810",
            "sort": 0,
            "gmtCreate": "2022-03-07 14:45:22",
            "gmtModified": null,
            "children": [
              {
                "id": "1500724269065281539",
                "title": "WindowsServer 2019",
                "parentId": "1500724269065281537",
                "sort": 0,
                "gmtCreate": "2022-03-07 14:45:22",
                "gmtModified": null,
                "children": null
              }
            ]
          }
        ]
      }
    ]
  }
}
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值