IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 递归查询 所有子课程 -> 正文阅读

[JavaScript知识库]递归查询 所有子课程

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

parent_id为空则为顶级课程

public Object 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
              }
            ]
          }
        ]
      }
    ]
  }
}
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-03-10 22:22:38  更:2022-03-10 22:24:44 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 7:37:51-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码