谷粒学院 树形结构显示课程分类

首选展示下后端需要传的json
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里类型是一级分类 把二级分离里装入一级分类
就等于最终集合里每个一级分类的内部集合都有二级分类
这就全活了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值