首选展示下后端需要传的json
在这里 课程分类主要分为一级和二级
分别建立对应的实体类(不同于课程分类的这个实体类)
private String id;
private String title;
//一个一级分类有多个二级分类
private List<TwoSubject> children =new ArrayList<>();
因为一级分类里包含二级分类 所以设一个数组来接受二级分类。
课程分类的实体类是这个
我发实体类是怕大家混淆
我这个项目使用mybatis-plus ,第一次用在项目里 不是很熟,但感觉还不错
下面是service代码
//课程分类 树形
@Override
public List<OneSubject> getAllOneTwoSubject() {
//查询一级分类封装的数据 然后封装
QueryWrapper<EduSubject> wrapperOne=new QueryWrapper<>();
wrapperOne.eq("parent_id","0");
List<EduSubject> oneSubjectList = baseMapper.selectList(wrapperOne);
//查询2级分类封装的数据 然后封装
QueryWrapper<EduSubject> wrapperTwo=new QueryWrapper<>();
wrapperTwo.ne("parent_id","0");
List<EduSubject> twoSubjectLis = baseMapper.selectList(wrapperTwo);
//创建list集合,用于存储最终封装数据
List<OneSubject> finalSubjectList=new ArrayList<>();
//封装一级分类
// 查询出所有的一级分类list遍历,获取每一个一级分类遍历值 封装到要求的list里
for (int i = 0; i < oneSubjectList.size(); i++) {
EduSubject eduSubject = oneSubjectList.get(i);
//把edusubject 放到onesubjct对象里面去
//多个onesubject放到finalSubjectList集合里去
OneSubject oneSubject=new OneSubject();
// oneSubject.setId(eduSubject.getId());
// oneSubject.setTitle(eduSubject.getTitle());
BeanUtils.copyProperties(eduSubject,oneSubject);
finalSubjectList.add(oneSubject);
//在一级分类循环遍历查询所有的二级分类
//创建list集合封装每一个一级分类的二级分类
List <TwoSubject> twofinal =new ArrayList<>();
for (int i1 = 0; i1 < twoSubjectLis.size(); i1++) {
EduSubject eduSubject2 = twoSubjectLis.get(i1);
//判断二级分类的父id是否和一级分类id一样
if(eduSubject2.getParentId().equals(eduSubject.getId()) )
{
//把edusubject2的值复制到twosubject里去 最后放到twofinal里去
TwoSubject twoSubject=new TwoSubject();
BeanUtils.copyProperties(eduSubject2,twoSubject);
twofinal.add(twoSubject);
}
}
//把一级下面的二级分类放到一级里去
oneSubject.setChildren(twofinal);
}
//封装二级分类
return finalSubjectList;
分析一下
根据数据库 父id=0是一级分类 所以来个小判断 分出一级和二级分类
就用mybatis plus的wrapper包装查询 然后mybatis plus自带的basemapper查询 查询后封装 之后for循环遍历 遍历之后搞到list里去
下一步了 轮到二级分类了
因为二级分类属于一级分类里 所在在第一步for循环里嵌套一个循环
把list集合里数据取出来并转移,中间需要二级分类的父id和一级分类比较
最后把二级分类放到一级分类的集合里去…
PS: List finalSubjectList
最终这个list里类型是一级分类 把二级分离里装入一级分类
就等于最终集合里每个一级分类的内部集合都有二级分类
这就全活了