博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
课程管理需求+后端接口
阅读量:3956 次
发布时间:2019-05-24

本文共 3273 字,大约阅读时间需要 10 分钟。

课程管理需求

在这里插入图片描述

我们用到的数据库表:
#edu_course 课程表:存储课程的基本信息
在这里插入图片描述

#edu_course_description 课程简介表:存储课程的基本信息

#edu_chapter 课程章节表:存储课程的章节信息
#edu_video 小节表:存储章节里面的小节信息
#edu_teacher 讲师表
#edu_subject 分类表
课程相关表的关系:在这里插入图片描述

课程管理-添加课程基本信息

第一步 使用代码生成器生成课程相关的代码

在这里插入图片描述

EduCourseDescriptionController类合并到EduCourseController类中
在这里插入图片描述
细节问题:
(1)创建Vo实体类用于表单数据封装
(2) 把表单提交过来的数据添加到数据库
向两张表中添加数据:课程表 和 课程描述表
(3)把讲师和分类使用下拉列表显示
课程分类做成二级联动的效果

第二步 创建一个Vo类封装表单提交的数据

@ApiModel(value = "课程基本信息", description = "编辑课程基本信息的表单对象")@Datapublic class CourseInfoForm implements Serializable {
private static final long serialVersionUID = 1L; @ApiModelProperty(value = "课程ID") private String id; @ApiModelProperty(value = "课程讲师ID") private String teacherId; @ApiModelProperty(value = "课程专业ID") private String subjectId; @ApiModelProperty(value = "课程标题") private String title; @ApiModelProperty(value = "课程销售价格,设置为0则可免费观看") //0.01 价格可以精确到更准确的值 private BigDecimal price; @ApiModelProperty(value = "总课时") private Integer lessonNum; @ApiModelProperty(value = "课程封面图片路径") private String cover; @ApiModelProperty(value = "课程简介") private String description;}

第三步 编写Controller和service部分

EduCourseController部分

@RestController@RequestMapping("/eduservice/course")@CrossOriginpublic class EduCourseController {
@Autowired private EduCourseService courseService; //添加课程基本信息的方法 @PostMapping("addCourseInfo") public R addCourseInfo(@RequestBody CourseInfoVo courseInfoVo){
courseService.saveCourseInfo(courseInfoVo); return R.ok(); }}

EduCourseServiceImpl部分(和之前的一样用了一个BeanUtils.copyProperties()方法)

(1)向课程表中添加课程基本信息

@Servicepublic class EduCourseServiceImpl extends ServiceImpl
implements EduCourseService {
//添加课程基本信息的方法 @Override public void saveCourseInfo(CourseInfoVo courseInfoVo) {
//1.向课程表中添加课程基本信息 //CourseInfoVo对象中转换eduCourse对象 EduCourse eduCourse = new EduCourse(); BeanUtils.copyProperties(courseInfoVo,eduCourse); int insert = baseMapper.insert(eduCourse); //返回数据更新几条 if(insert==0){
//添加失败 throw new GuliException(20001,"添加课程信息失败"); } }}

(2)向课程简介表中添加课程简介

EduCourseServiceImpl中调用EduCourseDescriptionServiceImpl中的内容,做个注入

在这里插入图片描述

@Servicepublic class EduCourseServiceImpl extends ServiceImpl
implements EduCourseService {
//课程描述注入 @Autowired private EduCourseDescriptionService courseDescriptionService; //添加课程基本信息的方法 @Override public void saveCourseInfo(CourseInfoVo courseInfoVo) {
//1.向课程表中添加课程基本信息 //CourseInfoVo对象中转换eduCourse对象 EduCourse eduCourse = new EduCourse(); BeanUtils.copyProperties(courseInfoVo,eduCourse); int insert = baseMapper.insert(eduCourse); //返回数据更新几条 if(insert==0){
//添加失败 throw new GuliException(20001,"添加课程信息失败"); } //2.向课程简介表中添加课程简介 //edu_course_description EduCourseDescription courseDescription = new EduCourseDescription(); courseDescription.setDescription(courseInfoVo.getDescription()); courseDescriptionService.save(courseDescription); }}

EduCourse和EduCourseDescription实体类加注解

在这里插入图片描述

测试一下效果:

id去掉,它自动帮我们填充:
在这里插入图片描述

成功:

在这里插入图片描述
看一下数据库表:
edu_course

在这里插入图片描述

edu_course_description

在这里插入图片描述

这里有小问题:

两个表的id值不一样,没有建立起一对一的关系

在这里插入图片描述

进入描述的实体类:
修改描述实体类的id中mp生成的策略
在这里插入图片描述
最终结果:
在这里插入图片描述

在这里插入图片描述

数据库中:

在这里插入图片描述

在这里插入图片描述

转载地址:http://wvxzi.baihongyu.com/

你可能感兴趣的文章
牛客练习赛43——B Tachibana Kanade Loves Probability(暴力,思维)
查看>>
牛客第十七届上海大学程序设计春季联赛——E CSL 的魔法(贪心)
查看>>
杭电ACM——1028,Ignatius and the Princess III(母函数)
查看>>
杭电ACM——1171,Big Event in HDU(母函数)
查看>>
杭电ACM——6491,时间间隔(思维)
查看>>
杭电AC——1085,Holding Bin-Laden Captive!(母函数)
查看>>
杭电ACM——2110,Crisis of HDU(母函数)
查看>>
杭电AM——2152,Fruit(母函数)
查看>>
杭电ACM——2566,统计硬币(DP)
查看>>
堆栈(数据结构)
查看>>
队列(数据结构)
查看>>
杭电ACM——1251,统计难题(Trie树)
查看>>
牛客网哈尔滨工程大学第十四届程序设计竞赛(同步赛)—— 小蚂蚁过马路(思维)
查看>>
牛客网哈尔滨工程大学第十四届程序设计竞赛(同步赛)—— 苹果手链(水题)
查看>>
杭电ACM——6518,Clumsy Keke(暴力+思维)
查看>>
杭电ACM——6512,Triangle(暴力 / 思维)
查看>>
牛客网哈尔滨工程大学第十四届程序设计竞赛(同步赛)——D 简单的烦恼(DP)
查看>>
牛客网哈尔滨工程大学第十四届程序设计竞赛(同步赛)——I 杨主席发糖(思维)
查看>>
杭电ACM——1305,Immediate Decodability(Trie树)
查看>>
杭电ACM——1075,What Are You Talking About(Tire树)
查看>>