现在项目中大多是前后端分离的项目,我们后端给数据,前端调用数据展示,所以我们后端可以将查到的数据放到集合里面,传递给前端。
1.二级查询的思路与方法,我们可以再创建两个实体,一个是一级实体,一个是二级实体,有人可能会有疑问,一级,二级里面要有啥属性呢,首先必须有id,其次就是你想要在前端展示内容,比如名字,年龄等信息,另外一级实体里面有包含二级实体,也就是说一个一级里面可以有许多的二级,直接看图吧



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

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

4 对我们的一级分与二级分类类进行封装,首先遍历查到的所有一级分类,然后把每一个一级分类赋值到我们所新创建的一级分类实体,此时在得到此一级分类的id,然后遍历我们的所查询二级分类集合,当我们的二级分类的父id与一级分类id相等时,说明此时的二级分类是属于此一级分类的,我们就将它加入集合,内循环完成后,我们就查找到了此一级分类的所有二级分类,我们集合赋值给我们的新创建一级分类的child,最后返回我们的list集合即可。代码如下
public List<OneSubject> getAllOneTwoSubject() {
//1 查询所有一级分类 parentid = 0
QueryWrapper<Subject> wrapperOne = new QueryWrapper<>();
wrapperOne.eq("parent_id","0");
List<Subject> oneSubjectList = baseMapper.selectList(wrapperOne);
//2 查询所有二级分类 parentid != 0
QueryWrapper<Subject> wrapperTwo = new QueryWrapper<>();
wrapperTwo.ne("parent_id","0");
List<Subject> twoSubjectList = baseMapper.selectList(wrapperTwo);
//创建list集合,用于存储最终封装数据
List<OneSubject> finalSubjectList = new ArrayList<>();
//3 封装一级分类
//查询出来所有的一级分类list集合遍历,得到每个一级分类对象,获取每个一级分类对象值,
//封装到要求的list集合里面 List<OneSubject> 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<TwoSubject> 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 我想说一下采用此方法的好处,此方法减少了对数据库的操作,并且容易理解,但是如果是对于多级分类查询的话,还是建议用递归的方法
本文介绍了一种在前后端分离项目中处理二级查询的方法,通过创建一级和二级实体,根据数据库查询结果进行数据封装,将一级分类及其对应的二级分类组织成集合传递给前端。这种方法简化了数据库操作,易于理解,适用于二级分类的情况,但若涉及多级分类,建议使用递归方式处理。
3476





