记录最简单的
两级树形结构实现
提供两个用于前端交互的两个VO
提供两个用于表操作的javaBean (如下提供数据库表)
最简单的两级树形结构实现。菜鸟不喜勿喷
步骤一
先查询出需要的数据
Chapter与Video的关系是一对多关系,一个章节包含多个小节
步骤二
查询出Chapter ,Video
步骤三
循环遍历
1)再把Chapter查询结果封装到需要的EduchapterVO
2)再把EduVideo查询结果封装到需要的EduVideoVO
3)把多的一方 EduVideoVO 封装的集合数据添加到EduchapterVO
4)再把EduchapterVO放到EduchapterVO集合
最终返回list提供给前端
代码如下
@Override
public List<ChapterVo> getChapterVideoById(String courseId) {
//根据id查询章节信息
QueryWrapper<EduChapter> queryWrapperchpter = new QueryWrapper<>();
queryWrapperchpter.eq("course_id",courseId);
List<EduChapter> eduChapters = baseMapper.selectList(queryWrapperchpter);
//根据id查询小节信息
QueryWrapper<EduVideo> queryWrappervideo = new QueryWrapper<>();
queryWrappervideo.eq("course_id",courseId);
List<EduVideo> eduVideos = videoService.list(queryWrappervideo);
//数据封装1.封装章节信息Vo
List<ChapterVo> finalList = new ArrayList<>();
for (int i = 0; i < eduChapters.size(); i++) {
ChapterVo chapterVo = new ChapterVo();
EduChapter eduChapter = eduChapters.get(i);
BeanUtils.copyProperties(eduChapter,chapterVo);
//数据封装2.封装小节信息Vo
List<VideoVo> videoVos = new ArrayList<>();
for (int m = 0; m < eduVideos.size(); m++) {
VideoVo videoVo = new VideoVo();
EduVideo eduVideo = eduVideos.get(m);
BeanUtils.copyProperties(eduVideo,videoVo);
videoVos.add(videoVo);
}
//封装章节信息完毕,每章章节信息包含小节信息List集合
chapterVo.setChildren(videoVos);
}
return finalList;
}