开发者学堂课程【微服务+全栈在线教育实战项目演练(SpringCloud Alibaba+SpringBoot):课程分类管理-课程分类显示接口(2)】学习笔记,与课程紧密连接,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/667/detail/11362
课程分类管理-课程分类显示接口(2)
内容介绍
一、返回格式数据
二、针对返回数据创建对应的实体类
三、编写具体封装代码
一、返回格式数据
CAutowired
private EduSubjectService subjectService;
//添加课程分类
//获取上传过来文件,把文件内容读取出来
@PostMapping( addSubject )
public R addSubject (MultipartFile file)
//上传过来 Excel 文件
subjectService. saveSubject (file, sub. jectService) :
return R. ok() :
返回这种格式数据:
id: 1,
label:,'一级分类名称',
children:
{
id:4、
label: '二级分类1',
}
id:2、
label: 1- 级分类2',
children: [
id: 5,
label: '二级-1'
id:б,
label: '二级2-2'
二,针对返回数据创建对应的实体类
第一步操作需要就是针对那个返回到数据创建对应的实体类,比如说现在看反应数据有什么数据,那就创建什么样的实体类,这是第一步。
在数据中,这里边这一部分是一级分类,一部分是二级分类,所以根据他就建两个实体类。
创建两个实体类,一个是一级分类,还有一个是二级分类,把这两串出来,然后你俩是一类跟他对应里面都是有ID和名称ID和名称,把这个做到,这是第一步操作。
//一级分类
@Data
public class OneSubject
private String id:
private String title:
//二级分类
@Data
public class twoSubject
private String id:
private String title:
再来建个包儿,这个包就叫 subject。
这个包,然后在 CS 中来创建两个一类,第一个是一级分类,比如说叫这个 oneSubject,一级分类,这是第一个,再创建一个叫二级分类,我们写一个叫twosubject。
这是他的这两个是一类,然后创建之后,对应那个数据写上它的属性就是ID和名称,这是一级分类。
然后写 ID 和名称来一 private school,这是 ID,第二个 private 写它的名称,这里边叫label,看一下表里边表中叫 title,写哪个都可以,就写个开头,这是第一个,写完之后,上面加上这个 data 属性,生成它的 get 的方法,这个就是一级分类,然后写完之后,再写他的二级分类,就是这个二级分类上面也是加上一个 data,然后在二级分类中也是 ID 和名称,所以这个就做到了,这是一级分类,这是二级分类。这是第一步操作。
import lombok. Data:
import java. util. ArrayList:
import java. util.List:
//一级分类
@Data
public class OneSubject 1
private String id:
private String title:
//一个一级分类有多个二级分类
private List<TwoSubject> children = new ArrayList<>():
第二步要给大家强调,因为现在还是按数据,一级分类下是不是有二级分类,另外一个一下边可能有多个二级分类,他们之间是有关系,所以第二个操作就在两个实体类之间来表示他们之间的一个关系,就是一个一级分类中有多个二级分类,把这关系在里边表示出来。一个一分类,有多个二级分类。
把这个格式要清楚,把这关系通过实体类。那多个怎么填出来多个的效果,可以写个数组类型,是不是也可以写个集合类型,因为速度和集合里边都可以存这个数据,所以这里边为了操作方便,用集合来表示,用过集合表示他的多个这种结构,多个肯定是能存多个数据的这种结构。
做这些目的都是为了最终这个数据的封装使用,因为你不这么做,数据后面不好返回它那个格式,这是第二步。
三,编写具体封装代码
@Autowired
private EduSubjectService subjectService;
//添加课程分类
//获取上传过来文件,把文件内容读取出来
@PostMapping( addSubject )
public R addSubject (MultipartFile file)
//上传过来 Excel 文件
subjectService. saveSubject (file, sub. jectService) :
return R. ok() :
//课程分类列表(树形)
//list集合泛形是一级分类
@GetMapping(" getAllSubject" )
public R getAllSubject() (
subjectService. getAll0neTwoSubject() :
return R. ok() ;
首先我们的第一步操作,现在要返回数据数据,肯定有一级和二级,所以第一步操作,但是要把那个就是查询出所有的一级分类。
然后在查询出所有的二级分类这两个分类,但是要先查出来先有数据才能封装,没有数据不能封装。
- 都查出来之又来封装他那个一级分类,一级分类放到里面去,然后封装之后,第四步等待封装那个二级分类。主要是这么一个总体上流程。
怎么来查,看这个表里边,那主要思想是一个特点,一级分类的最大特点就是Parent ID 是等于零,查的话,只要加个条件,当等于零,那一分类是都查出来了,这就是他的第一个,注意不等于零二级分不出来,因为只有两级,没有三级,那三级用其他方式,所以就这么做。
做一个分析,查出来后做封装,就先有数据网实现。怎么查,是在这个坠子里面做操作,比如这边先简单写个语句。
From 这张表儿,然后加一个 will,加一个叫 parent。这个 ID 等于一个值是零,J查出来的肯定是一级分类,然后这个值如果说它不等于零那查出来的肯定是二级分类,但是咱现在把语句编程代码在里面,其实就是多了一个条件就可以,就这么做,首先第一个,因为有条件,按照学到的,一个叫这个 query rap。
里边加上那个对象,实体类这个起个名字叫 rapper,这个一级分类叫外叫 rocker,等于扭上一个框就建 new 对象,然后完之后 rap 外里边设置它那个值,这个值就是写这个 parent 下划线 ID。
就是这个字段的名字,然后它的值就等于这个零,这是条件就设置了,然后设置完条件之后,下面咱是要查询的,但是查询注意是在 service 中,而要查的话,按照正常顺序 service,不要 map。
@Override
public List<OneSubject> getAll0neTwoSubject() {
//1 查询所有一级分类 parentid=0
QueryWrapper<EduSubject> wrapper0ne = new QueryWrapper<>() ;
wrapper0ne. eq( column: "parent_ _id", val: "0~):
List<EduSubject> oneSubjectList = baseMapper. selectList (wrapperOne) :
//查询所有二级分类 parentid != 0
QueryWrapper<EduSubject> wrapperTwo = new QueryWrapper<> () :
wrapperTwo. ne( column: parent id", val: "0");
List<EduSubject> twoSubjectList = baseMapper. selectList (wrapperTwo) :
//3封装级分类
//4封装二级分类
return null;