谷粒学院73——课程列表后端(下)
上节的代码我们还没有对数据进行封装(把数据库对应的类型Edusubject封装到前端需要的类型Onesubject中)。如何封装?第一种方法是遍历取出需要的值。
// 最终返回的数据类型,泛型中存储的数据类型是OneSubject,这个数据类型与前端展示的列表要求的结构一致
List<OneSubject> finalSubject = new ArrayList();
// 3.封装一级分类
// 我们需要把firstList封装到finalSubject中。
// 法1:遍历取值、传值
for (int i = 0; i < firstList.size(); i++) {
EduSubject eduSubject = firstList.get(i);
OneSubject oneSubject = new OneSubject();
oneSubject.setId(eduSubject.getId());
oneSubject.setTitle(eduSubject.getTitle());
finalSubject.add(oneSubject);
}
但是如果需要的属性不止id
,title
,而是很多,那操作不是很麻烦吗?
//法2:BeanUtils
for (int i = 0; i < firstList.size(); i++) {
EduSubject eduSubject = firstList.get(i);
OneSubject oneSubject = new OneSubject();
BeanUtils.copyProperties(eduSubject, oneSubject);
finalSubject.add(oneSubject);
}
return finalSubject;
在controller增加注解,返回数据。
@GetMapping("/getAllSubject")
public R getAllSubject() {
// 一级分类中已经包含了二级分类
List<OneSubject> list = eduSubjectService.getAllSubject();
return R.ok().data("list", list);
}
swagger-ui测试如下.
把二级分类封装。
for (int i = 0; i < firstList.size(); i++) {
EduSubject eduSubject = firstList.get(i);
OneSubject oneSubject = new OneSubject();
BeanUtils.copyProperties(eduSubject, oneSubject);
// 4.封装二级分类
List<TwoSubject> twoFinalSubject = new ArrayList<>();
// 在一级分类中遍历二级分类,找到parent_id与当前一级分类对应的二级分类
for (int j = 0; j < secondList.size(); j++) {
EduSubject tSubject = secondList.get(j);
if(tSubject.getId().equals(eduSubject.getId())) {
TwoSubject twoSubject = new TwoSubject();
BeanUtils.copyProperties(tSubject, twoSubject);
twoFinalSubject.add(twoSubject);
}
}
oneSubject.setChildren(twoFinalSubject);
finalSubject.add(oneSubject);
}
测试结果如下。
java全栈日日学 文章被收录于专栏
java全栈每日必学,不要高估自己一年能做的事,不要低估自己十年能做的事