分别查询一级二级的数据集合
public class EduSubject implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "课程类别ID")
@TableId(value = "id", type = IdType.ID_WORKER_STR)
private String id;
@ApiModelProperty(value = "类别名称")
private String title;
@ApiModelProperty(value = "父ID")
private String parentId;
@ApiModelProperty(value = "排序字段")
private Integer sort;
@TableField(fill = FieldFill.INSERT)
@ApiModelProperty(value = "创建时间")
private Date gmtCreate;
@TableField(fill = FieldFill.INSERT_UPDATE)
@ApiModelProperty(value = "更新时间")
private Date gmtModified;
}
@Data
public class OneSubject {
private String id;
private String title;
private List<TwoSubject> children = new ArrayList<>();
}
@Data
public class TwoSubject {
private String id;
private String title;
}
查询出来的结果复制到 OneSubject 实现菜单的分级
@Override
public List<OneSubject> getAllOneTwoSubject() {
//1查询出所有一级分类 parent_id=0
QueryWrapper<EduSubject> wrapper = new QueryWrapper<>();
wrapper.eq("parent_id", "0");
List<EduSubject> oneSubjectList = baseMapper.selectList(wrapper);
//2查询出所有二级分类 parent_id!=0
QueryWrapper<EduSubject> wrapper2 = new QueryWrapper<>();
wrapper2.ne("parent_id", "0");
List<EduSubject> twoSubjectList = baseMapper.selectList(wrapper2);
//3封装一级分类
List<OneSubject> finnalList = new ArrayList<>();
for (int i = 0; i < oneSubjectList.size(); i++) {
EduSubject eduSubject = oneSubjectList.get(i);
//new OneSubject设置值,add加入list
OneSubject oneSubject = new OneSubject();
// oneSubject.setId(eduSubject.getId());
// oneSubject.setTitle(eduSubject.getTitle());
//复制操作
BeanUtils.copyProperties(eduSubject, oneSubject);
finnalList.add(oneSubject);
//4封装二级分类
//创建list集合封装每一个一级分类的二级分类
ArrayList<TwoSubject> twoFinnalList = new ArrayList<>();
for (int j = 0; j < twoSubjectList.size(); j++) {
EduSubject eduSubject2 = twoSubjectList.get(j);
if (eduSubject.getId().equals(eduSubject2.getParentId())) {
TwoSubject twoSubject = new TwoSubject();
//如过一级分类的id==二级分类的parent_id,进行封装
BeanUtils.copyProperties(eduSubject2, twoSubject);
twoFinnalList.add(twoSubject);
}
}
oneSubject.setChildren(twoFinnalList);
}
return finnalList;
}