一:讲师管理
介绍:可以实现对讲师的分页展示,多条件组合分页查询,对讲师的添加,修改,删除操作。
针对于添加来说,使用requestBody注解,搭配postmapping接收数据,使用service层的对象,调用mapper方法,向数据库中保存数据。
修改:
先根据讲师id,查询出讲师,再去修改
创建时间和更新时间在实体类中使用TabledField注解,实现自动填充。
对讲师分页展示;支持多条件组合查询教师;
分页展示:
使用mp的分页插件,在接口中,通过路径,接收当前页和每页记录数,接着创建page对象,接收两个参数,一个是当前页码,一个是当前页的记录数。调用方法,把page对象传进去,会将分页所有数据封装到这个page对象当中,通过page对象,返回所有数据的一个list集合。
多条件组合带分页的查询:
用户选择不同的条件,可以查出不同的教师。
首先要把条件值封装到vo当中,把vo再传给接口。(vo中包括讲师名称,级别,开始和结束时间)。
然后会对传来的条件值进行判空,如果不为空,就拼接条件,使用page方法根据条件,查询出符合的数据,最后返回数据。
常用注解:
requestBody:前端用json传递数据,把数据封装到对应的对象当中。
需要搭配psot提交;
还要注意传来的数据是否可以为空,如果可以为空,就要设置required为false
reponseBody:用于返回json数据。
PathVariable:将url中的变量绑定到方法中的参数上。
Value:用来读取配置文件中的数据,保存到变量中。
上传讲师头像:
将id和密钥保存到配置文件当中,使用常量类,读取配置文件中的内容。
在相关接口中,接收文件变量,使用阿里云的相关方法,先创建出一个oss实例
再获取一个文件输入流
调用oss实例中的put方法,实现上传,返回保存的文件路径
文件路径需要手动拼接出来:由桶的名称+站点名称+文件名称
方法的参数有:bucket名称,输入流,文件名
使用datetime获取当前时间,再把当前时间拼接到文件名称里面,这样在进行上传的时候,就可以在阿里云中根据时间,建立相应的文件夹,来对文件进行分类。
问题:
1:如何使用oss服务
在使用oss服务之前,需要在阿里云中创建出bucket,也就相当于一个文件夹,用来存储相关文件
再得到id和密钥,只有有了这个,才有相关权限去操作。
再去Java工程中引入相关依赖,就可以操作相关方法,上传相关文件。
2:多次上传文件,如果文件名相同会被覆盖,如何解决
通过使用uuid的random方法,给文件名称添加唯一的随机值。
二:课程分类管理
课程分类管理是我负责开发的,负责展示相关课程,进行二级分类展示。
树形分类展示:
1:首先需要将数据存入到数据库中
使用的easyexcel,读取数据是从磁盘中一行一行读取,而不是将文件一次性读到内存当中
根据excel的列表头创建对应的实体类
在接口中获取文件输入流
获取到文件之后,调用easyexcel的read方法进行读取,参数有输入流,实体类,监听器对象
接下来需要实现监听器这个类:
它是进行一行一行的读取数据的
监听器这个类,交给不了spring管理,那么在这个监听器中,就注入不了其他对象,所以就将其他对象传给监听器的构造方法,实现将其他对象注入到这个监听器类中。
这个类中有两个方法,一个是invoke方法,用来读取excel数据。
由于有每一行中第一个数据是一级分类,第二个数据是二级分类
所以就先读第一个数据,读取到数据库中,再读第二个数据,读取到数据库中
在进行读取时,要进行判断数据是否重复
是根据名称和parentid值进行判断,一级分类的parentid值都是0,二级分类的parentid值是它对应的一节分类的parentid值
2:存入之后,需要给前端返回数据,构建出前端需要的类型的数据
分析:最外层是一个json类型的数组,数组里面又有多个对象,每个对象中,有一级分类,又有一个数组,数组当中又有多个对象,对象中是二级分类。
其实就是最后返回一个list集合,这个集合里面存储一级分类的对象,在这个对象当中又有一个集合,用来存储二级分类对象。简单就是集合里面存对象,对象里面又存集合,
第一步:根据返回数据,建立对应的实体类
第二步: 在两个实体类之间表示关系&