人生格言
未来犹存,人生当前
json 数据格式
[
{
id: 1,
label: "Level one 1",
children: [
{
id: 4,
label: "Level two 1-1",
children: [
{
id: 9,
label: "Level three 1-1-1",
},
{
id: 10,
label: "Level three 1-1-2",
},
],
},
],
},
{
id: 2,
label: "Level one 2",
children: [
{
id: 5,
label: "Level two 2-1",
},
{
id: 6,
label: "Level two 2-2",
},
],
},
{
id: 3,
label: "Level one 3",
children: [
{
id: 7,
label: "Level two 3-1",
},
{
id: 8,
label: "Level two 3-2",
},
],
},
]
实体类的准备
package com.gsx.eduservice.entity.subject;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
* @version 1.0
* @Author mmrone gsx
* @Date 2022/5/6 16:26
* @注释
* 一级分类实体类
*/
@Data
public class OneSubject {
private String id;
private String title;
//一个一级分类有多个二级分类
//数组一定要初始化,为其分配存储空间
private List<TwoSubject> children =new ArrayList<>();
}
package com.gsx.eduservice.entity.subject;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
* @version 1.0
* @Author mmrone gsx
* @Date 2022/5/6 16:27
* @注释
* 二级分类,目前我们只涉及到二级分类
*/
@Data
public class TwoSubject {
private String id;
private String title;
/* //一个二级分类有多个三级分类
//数组一定要初始化,为其分配存储空间
private List<TwoSubject> children =new ArrayList<>();*/
}
整合代码的准备
//查询所有的课程类别(包括一级分类,二级分类)
//mybatis-plus已经帮我们注入了连接mapper的baseMapper直接使用就可以,可以通过
//上面的实现类来查看这个过程
@Override
public List<OneSubject> getAllSubject() {
//设置一级分类的查询条件
QueryWrapper<EduSubject> oneWrapper =new QueryWrapper();
oneWrapper.eq("parent_id","0");
// 设置二级分类的查询条件
QueryWrapper<EduSubject> twoWrapper =new QueryWrapper();
twoWrapper.ne("parent_id","0");
List<EduSubject> oneSubjects=new ArrayList<>();
List<EduSubject> twoSubjects=new ArrayList<>();
// 查询所有的一级分类
oneSubjects=baseMapper.selectList(oneWrapper);
// 查询所有的二级分类
twoSubjects=baseMapper.selectList(twoWrapper);
//用来存储所有的课程分类的集合
List<OneSubject> subjects=new ArrayList<>();
for(int i=0;i<oneSubjects.size();i++){
//将EduSubject转化为OneSubject
OneSubject oneSubject=new OneSubject();
oneSubject.setId(oneSubjects.get(i).getId());
oneSubject.setTitle(oneSubjects.get(i).getTitle());
String pid1= oneSubjects.get(i).getId();
for (int j=0;j< twoSubjects.size();j++){
//确定这个二级分类所属于那个一级分类
String pid2=twoSubjects.get(j).getParentId();
if(pid1.equals(pid2)){
//将EduSubject转化为TwoSubject
TwoSubject twoSubject=new TwoSubject();
twoSubject.setId(twoSubjects.get(j).getId());
twoSubject.setTitle(twoSubjects.get(j).getTitle());
//将二级分类添加到一级分类
oneSubject.getChildren().add(twoSubject);
}
}
//将一级分类添加到课程分类集合 一级分类中概括者二级分类
subjects.add(oneSubject);
}
return subjects;
}
整合代码简化版
//查询所有的课程类别(包括一级分类,二级分类)
//mybatis-plus已经帮我们注入了连接mapper的baseMapper直接使用就可以,可以通过
//上面的实现类来查看这个过程
@Override
public List<OneSubject> getAllSubject() {
//设置一级分类的查询条件
QueryWrapper<EduSubject> oneWrapper =new QueryWrapper();
oneWrapper.eq("parent_id","0");
// 设置二级分类的查询条件
QueryWrapper<EduSubject> twoWrapper =new QueryWrapper();
twoWrapper.ne("parent_id","0");
List<EduSubject> oneSubjects=new ArrayList<>();
List<EduSubject> twoSubjects=new ArrayList<>();
// 查询所有的一级分类
oneSubjects=baseMapper.selectList(oneWrapper);
// 查询所有的二级分类
twoSubjects=baseMapper.selectList(twoWrapper);
//用来存储所有的课程分类的集合
List<OneSubject> subjects=new ArrayList<>();
for(int i=0;i<oneSubjects.size();i++){
//将EduSubject转化为OneSubject
OneSubject oneSubject=new OneSubject();
// oneSubject.setId(oneSubjects.get(i).getId());
// oneSubject.setTitle(oneSubjects.get(i).getTitle());
BeanUtils.copyProperties(oneSubjects.get(i),oneSubject);
String pid1= oneSubjects.get(i).getId();
for (int j=0;j< twoSubjects.size();j++){
//确定这个二级分类所属于那个一级分类
String pid2=twoSubjects.get(j).getParentId();
if(pid1.equals(pid2)){
//将EduSubject转化为TwoSubject
TwoSubject twoSubject=new TwoSubject();
// twoSubject.setId(twoSubjects.get(j).getId());
// twoSubject.setTitle(twoSubjects.get(j).getTitle());
BeanUtils.copyProperties(twoSubjects.get(j),twoSubject);
//将二级分类添加到一级分类
oneSubject.getChildren().add(twoSubject);
}
}
//将一级分类添加到课程分类集合 一级分类中概括者二级分类
subjects.add(oneSubject);
}
return subjects;
}
整合结果
{
"success": true,
"code": 20000,
"message": "成功",
"data": {
"list": [
{
"id": "1522507649296162817",
"title": "前端开发",
"children": [
{
"id": "1522507649333911553",
"title": "vue"
},
{
"id": "1522507649333911554",
"title": "JavaScript"
},
{
"id": "1522507649401020417",
"title": "jquery"
}
]
},
{
"id": "1522507649401020418",
"title": "后端开发",
"children": [
{
"id": "1522507649468129281",
"title": "java"
},
{
"id": "1522507649468129282",
"title": "c++"
}
]
},
{
"id": "1522507649535238145",
"title": "数据库开发",
"children": [
{
"id": "1522507649535238146",
"title": "MySQL"
}
]
},
{
"id": "1522507671257538561",
"title": "中间件",
"children": [
{
"id": "1522507671320453122",
"title": "redis"
}
]
}
]
}
}