此节没有技术难点,重点在于如何实现表之间的关联
1、用代码生成器生成课程相关接口
之前已经配置好代码生成器,现在只需要添加映射表名
//一次可映射多个表
strategy.setInclude("edu_course","edu_course_description","edu_video","edu_chapter");
2、创建入参实体类 courseInfoVo
入参不需要课程实体类的所有信息,所以创建一个入参实体类专门接受入参
3、控制层
@Api(value = "课程控制器")
@RestController
@RequestMapping("/eduservice/course")
@CrossOrigin
public class EduCourseController {
@Autowired
private EduCourseService courseService;
@ApiOperation(value = "添加课程信息")
@PostMapping("addCourseInfo")
public Result addCourseInfo(@RequestBody CourseInfoVo courseInfoVo){
String id = courseService.saveCourseInfo(courseInfoVo);
return Result.ok().data("courseId",id);
}
}
4、业务层及实现类
@Service //注入IOC容器中
public class EduCourseServiceImpl extends ServiceImpl<EduCourseMapper, EduCourse> implements EduCourseService {
// 当需要使用其他service接口时需要在此引入
@Autowired
private EduCourseDescriptionService courseDescriptionService;
/**
* 添加课程信息存入课程表,同时将描述信息存入课程描述表
* @param courseInfoVo
* @return
*/
@Override
public String saveCourseInfo(CourseInfoVo courseInfoVo) {
EduCourse eduCourse = new EduCourse();
//复制属性
BeanUtils.copyProperties(courseInfoVo,eduCourse);
//将课程信息存入课程表
int insertNums = baseMapper.insert(eduCourse); //insertNums表示影响行数
if (insertNums == 0) {
throw new MyException(20001,"添加课程信息失败");
}
//获取课程id
String cid = eduCourse.getId();
//获取课程描述信息,课程与课程描述:1对1关系
EduCourseDescription eduCourseDescription = new EduCourseDescription();
eduCourseDescription.setDescription(courseInfoVo.getDescription());
/*
将课程id赋给课程描述id,使其成为1对1关系,
此步骤是将课程表和描述表关联起来的关键
*/
eduCourseDescription.setId(cid);
//存入课程描述信息
courseDescriptionService.save(eduCourseDescription);
return cid;
}
}
原文:https://www.cnblogs.com/silloutte/p/14402698.html