基于SpringBoot的修改部门操作(黑马程序员JAVAWEB视频练习)

在DeptController.java编写如下代码,因为前端传送过来的是含有id和name的JSON格式,因此我们用Dept来封装数据,并加上@RequestBody注解。在Controller层调用Service层update.

@PutMapping("/depts")
    public Result update(@RequestBody Dept dept) {
        log.info("修改部门:{}",dept);

        deptService.update(dept);
        return Result.success();
    }

接下来在接口

DeptService定义方法

void update(Dept dept);

然后在实现类里实现update方法

    @Override
    public void update(Dept dept) {
        dept.setUpdateTime(LocalDateTime.now());

        deptMapper.update(dept);

    }

最后在DeptMapper编写更新语句

    @Update("update dept set name = #{name} ,update_time = #{updateTime} where id = #{id}")
    void update(Dept dept);

一开始我就是这么写的,自以为大功告成,肯定能成功,因为在ApiFox上测试成功的,然而在我打开页面去试了一下发现,编辑部门变成新增部门,让我很困惑。后来我打开开发者工具,发现点击“编辑”按钮时,前端控制台报错“Method is not allowed”.并且我还发现当我点击"编辑"按钮时,前端发来的请求是带有路径参数id的,这个id是部门id,而且也没有做到回显的功能。所以分析可以知道我们应该先写一个根据ID查询部门的功能

话不多说,开干!

老套路,现在Controller层写

    @GetMapping("/depts/{id}")
    public Result selectById(@PathVariable Integer id) {
        log.info("根据Id查询:{}",id);
        Dept dept = deptService.selectById(id);
        return Result.success(dept);
    }

注意这里是GET请求,并且前端会传来路径参数,因此我们要用上@PathVariable注解来获取参数id。

然后在DeptService的接口定义selectById方法

Dept selectById(Integer id);

然后在实现类里实现该方法

    @Override
    public Dept selectById(Integer id) {
        return deptMapper.selectById(id);
    }

最后在DeptMapper里编写根据ID查询的SQL语句

    @Select("select id,name from dept where id = #{id}")
    Dept selectById(Integer id);

这下大功告成了。去测试一下发现不仅有了回显功能,编辑功能也正常了,试一下把“咨询部”改成“干饭部”

然后看看界面,确实改过来了

如果还不放心,我们可以去数据库看看

需要注意的是更新语句里的表名别写错了,我就是表名写错,检查半天才检查出来,因为我在日志里的SQL语句看到更新的是emp表。

  • 14
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值