为了账号安全,请及时绑定邮箱和手机立即绑定

【学习打卡】第4天 完成电子书编辑功能

标签:
活动

课程名称:Spring Boot+Vue3前后端分离,实战wiki知识库系统

课程章节:6-8 完成电子书编辑功能

主讲老师:甲蛙

课程内容:

  • 增加后端保存接口

  • 点击保存时,调用保存接口

  • 保存成功刷新列表

课程收获:

增加后端保存接口

在req文件夹下的EbookReq改为EbookQueryReq,新建封装保存请求EbookSaveReq,与ebook类内容相同。

在EbookService中新建save方法,参数为前端发送请求的内容EbookSaveReq req,使用CopUtil.copy()方法将接收的内容复制成Ebook对象。然后判断id是否为空,为空则新增,非空则更新。

/**
 * 保存
 */
public void save(EbookSaveReq req){
    Ebook ebook = CopyUtil.copy(req, Ebook.class);
    if(ObjectUtils.isEmpty(ebook.getId())){
        // 新增
        ebookMapper.insert(ebook);
    }else{
        // 保存
        ebookMapper.updateByPrimaryKey(ebook);
    }

}

最后EbookController新增POST请求接口save,执行保存操作后与返回new后未改动的CommonResp(即仅有success = true)。

POST请求,如果是以json方式提交,后端参数需要增加@RequestBody,如果是以form方式提交,则不需要加任何注解

@PostMapping("/save")
public CommonResp save(@RequestBody EbookSaveReq req){
    CommonResp resp = new CommonResp<>();
    ebookService.save(req);
    return resp;
}

点击保存时,调用保存接口,并刷新列表

前端保存请求对应的js方法为handleModalOk,原来代码暂时设置一个定时器自动关闭,将定时器删除后使用axios发送post请求,post的参数不像get一样使用params,而是用ebook.value获取表单数据的对象作为参数。然后对响应的sucess参数进行判断若为true则成功保存,关闭对话框并刷新列表

const handleModalOk = () => {
  modalLoading.value = true;
  axios.post("/ebook/save",ebook.value).then((response) => {
    const data = response.data; //data = commonResp
    if(data.success){
      modalVisible.value = false;
      modalLoading.value = false;

      // 重新加载列表
      handleQuery({
        page: pagination.value.current,
        size: pagination.value.pageSize
      })
    }
  });
};


编辑

https://img1.sycdn.imooc.com//62fd03e6000194ad19070910.jpg

可以看到编辑成功

https://img1.sycdn.imooc.com//62fd03f7000151ee19190601.jpg

从数据库看成功保存到数据库内

https://img1.sycdn.imooc.com//62fd043d0001fc5a13340279.jpg




           

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消