添加课程信息接口:把两张表的数据分别存入数据库的代码实现

前端传过来一个表单,表单中包含两张表,把两张表的数据分别存入数据库的代码实现

EduCourse表

EduCourseDescription表,这张表引用 EduCourse的id

首先把表单对应的数据库字段整合成一个公共实体类,这个实体类和表单内容一一对应,但表单的内容需要插入不同的数据表。

首先根据表单内容创建一个实体类

@Data
public class CourseInfoVo {
    @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则可免费观看")
    private BigDecimal price;
    @ApiModelProperty(value = "总课时")
    private Integer lessonNum;
    @ApiModelProperty(value = "课程封面图片路径")
    private String cover;
    @ApiModelProperty(value = "课程简介")
    private String description;
    private String subjectParentId;
}

在controller层把表单实体类courseInfoVo传到service层

    @Autowired
    private EduCourseService courseService;

    @ApiOperation(value = "添加课程信息")  //swagger提示注解定义在方法上:@ApiOperation
    //添加课程信息
    @PostMapping("addCourseInfo")
    public R addCourseInfo(
            @ApiParam(name = "id", value = "基本课程信息", required = true)
            @RequestBody CourseInfoVo courseInfoVo){
        //调用service
        courseService.saveCourseInfo(courseInfoVo);
        return R.ok();

    }

来到service层和数据库做交互

@Service
public class EduCourseServiceImpl extends ServiceImpl<EduCourseMapper, EduCourse> implements EduCourseService {

    //需要课程简介表的 service 直接注入进来
    @Autowired
    private EduCourseDescriptionService courseDescriptionService;
    //添加课程信息
    @Override
    public void saveCourseInfo(CourseInfoVo courseInfoVo) {
        //添加课程信息,首先 nwe 一个edu_Course对应的实体类,
        EduCourse eduCourse = new EduCourse();
        //将表单对应的实体类courseInfoVo  copy  到 单表对应的实体类EduCourse  其中属性名一样的属性会自动复制
        BeanUtils.copyProperties(courseInfoVo,eduCourse);
        int insert = baseMapper.insert(eduCourse);
        if(insert == 0){
            throw new GuliException(20001,"请检查您输入的课程信息");
        }
        //不为空表示添加成功

        //获取添加成功后的课程信息的 id  走到这一步EduCourse肯定添加成功了
        String cid = eduCourse.getId();
        //添加课程简介  
        EduCourseDescription eduCourseDescription = new EduCourseDescription();
        eduCourseDescription.setDescription(courseInfoVo.getDescription());
        //把课程信息eduCourse的 id 放到 简介eduCourseDescription的id上
        eduCourseDescription.setId(cid);
        //使用另一张表对应的service将eduCourseDescription保存到数据库
        courseDescriptionService.save(eduCourseDescription);
    }
}

另外由于eduCourseDescription.setId(cid);这个id是我们手动注入的所有要改变id生成策略

@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="EduCourseDescription对象", description="课程简介")
public class EduCourseDescription implements Serializable {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "课程ID")
    @TableId(value = "id", type = IdType.INPUT)  //type = IdType.INPUT表示这个ID需要我们手动插入
    private String id;

    @ApiModelProperty(value = "课程简介")
    private String description;

    @ApiModelProperty(value = "创建时间")
    @TableField(fill = FieldFill.INSERT)
    private Date gmtCreate;

    @ApiModelProperty(value = "更新时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date gmtModified;


}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值