关于查询二级分类的简单方法

现在项目中大多是前后端分离的项目,我们后端给数据,前端调用数据展示,所以我们后端可以将查到的数据放到集合里面,传递给前端。

1.二级查询的思路与方法,我们可以再创建两个实体,一个是一级实体,一个是二级实体,有人可能会有疑问,一级,二级里面要有啥属性呢,首先必须有id,其次就是你想要在前端展示内容,比如名字,年龄等信息,另外一级实体里面有包含二级实体,也就是说一个一级里面可以有许多的二级,直接看图吧

关于查询二级分类的简单方法_第1张图片

 关于查询二级分类的简单方法_第2张图片关于查询二级分类的简单方法_第3张图片

2.从我们的数据库中查出所有的一级与二级分类

关于查询二级分类的简单方法_第4张图片

 3 创建list集合,存储我们的数据,这就是我们要传到前端的内容

关于查询二级分类的简单方法_第5张图片

 4 对我们的一级分与二级分类类进行封装,首先遍历查到的所有一级分类,然后把每一个一级分类赋值到我们所新创建的一级分类实体,此时在得到此一级分类的id,然后遍历我们的所查询二级分类集合,当我们的二级分类的父id与一级分类id相等时,说明此时的二级分类是属于此一级分类的,我们就将它加入集合,内循环完成后,我们就查找到了此一级分类的所有二级分类,我们集合赋值给我们的新创建一级分类的child,最后返回我们的list集合即可。代码如下

 public List getAllOneTwoSubject() {

            //1 查询所有一级分类  parentid = 0
            QueryWrapper wrapperOne = new QueryWrapper<>();
            wrapperOne.eq("parent_id","0");
            List oneSubjectList = baseMapper.selectList(wrapperOne);

            //2 查询所有二级分类  parentid != 0
            QueryWrapper wrapperTwo = new QueryWrapper<>();
            wrapperTwo.ne("parent_id","0");
            List twoSubjectList = baseMapper.selectList(wrapperTwo);

            //创建list集合,用于存储最终封装数据
            List finalSubjectList = new ArrayList<>();

            //3 封装一级分类
            //查询出来所有的一级分类list集合遍历,得到每个一级分类对象,获取每个一级分类对象值,
            //封装到要求的list集合里面 List finalSubjectList
            for (int i = 0; i < oneSubjectList.size(); i++) { //遍历oneSubjectList集合
                //得到oneSubjectList每个eduSubject对象
                Subject eduSubject = oneSubjectList.get(i);
                //把eduSubject里面值获取出来,放到OneSubject对象里面
                OneSubject oneSubject = new OneSubject();
//            oneSubject.setId(eduSubject.getId());
//            oneSubject.setTitle(eduSubject.getTitle());
                //eduSubject值复制到对应oneSubject对象里面
                BeanUtils.copyProperties(eduSubject,oneSubject);
                //多个OneSubject放到finalSubjectList里面
                finalSubjectList.add(oneSubject);

                //在一级分类循环遍历查询所有的二级分类
                //创建list集合封装每个一级分类的二级分类
                List twoFinalSubjectList = new ArrayList<>();
                //遍历二级分类list集合
                for (int m = 0; m < twoSubjectList.size(); m++) {
                    //获取每个二级分类
                    Subject tSubject = twoSubjectList.get(m);
                    //判断二级分类parentid和一级分类id是否一样
                    if(tSubject.getParentId().equals(eduSubject.getId())) {
                        //把tSubject值复制到TwoSubject里面,放到twoFinalSubjectList里面
                        TwoSubject twoSubject = new TwoSubject();
                        BeanUtils.copyProperties(tSubject,twoSubject);
                        twoFinalSubjectList.add(twoSubject);
                    }
                }
                //把一级下面所有二级分类放到一级分类里面
                oneSubject.setChildren(twoFinalSubjectList);
            }
            return finalSubjectList;
        }

5 我想说一下采用此方法的好处,此方法减少了对数据库的操作,并且容易理解,但是如果是对于多级分类查询的话,还是建议用递归的方法

你可能感兴趣的:(二级查询)