简单树结构生成
实体:
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="EduSubject对象", description="课程科目")
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;
@ApiModelProperty(value = "创建时间")
@TableField(fill = FieldFill.INSERT)
private Date gmtCreate;
@ApiModelProperty(value = "更新时间")
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date gmtModified;
}
//subject树结构VO
@Data
public class Subject {
private String id;
private String title;
private List<Subject> children = new ArrayList<>();
}
实现:
@Override
public List<Subject> getAllSubject() {
List<Subject> subjects = new ArrayList<>();
//查询所有数据
List<EduSubject> all = baseMapper.selectList(null);
//查询所有的一级区域
QueryWrapper<EduSubject> wrapper = new QueryWrapper<>();
wrapper.eq("parent_id", 0);
List<EduSubject> oneEduSubjectList = baseMapper.selectList(wrapper);
for (EduSubject eduSubject : oneEduSubjectList) {
Subject subject = new Subject();
BeanUtils.copyProperties(eduSubject, subject);
//查询子节点
List<Subject> children = findChildrens(eduSubject.getId(), all);
subject.setChildren(children);
subjects.add(subject);
}
return subjects;
}
public List<Subject> findChildrens(String id, List<EduSubject> all) {
List<Subject> childList = new ArrayList<>();
if (id != null && all != null) {
for (EduSubject eduSubject : all) {
if (Objects.equals(eduSubject.getParentId(), id)) {
Subject subject1 = new Subject();
BeanUtils.copyProperties(eduSubject, subject1);
subject1.setChildren(findChildrens(subject1.getId(), all));
childList.add(subject1);
}
}
}
return childList;
}
可以改为Lambda表达式的写法。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示