java学习--黑马SpringBoot3课程个人总结-2024-02-02

1.更新用户的头像

获取线程中的用户ID

   //更新用户的头像
    @Override
    public void updateAvatar(String avatarUrl) {
        //获取线程中用户的ID
        Map<String ,Object> map = ThreadLocalUtil.get();
        Integer id = (Integer) map.get("id");
        userMapper.updateAvatar(avatarUrl,id);
    }

Controller层的代码

  //更新用户的头像
    @PatchMapping("/updateAvatar")
    public Result updateAvatar(@RequestParam String avatarUrl){
        userService.updateAvatar(avatarUrl);
        return Result.success();
    }

Mapper层的代码

   @Update("update user set user_pic=#{avatarUrl},update_time=now() where id=#{id}")
    void updateAvatar(String avatarUrl,Integer id);

进行测试

我们看到此处虽然不是照片,但是也操作成功

在这里插入图片描述
我们要对参数进行合法性校验
我们要让图片变成一个url地址
添加注解
在这里插入图片描述

测试结果如图所示
在这里插入图片描述
测试合法参数
在这里插入图片描述

  • 我们看到了两个参数的注解,@RequestBody和@RequestParam
  • 他们分别有什么作用?
  • 区别在哪里?

注解 @RequestParam接收的参数是来自requestHeader中,即 请求头。 通常用于GET请求,像POST、DELETE等其它类型的请求也可以使用。
注解 @RequestBody接收的参数是来自requestBody中,即请求体。一般用于处理非 Content-Type: application/x-www-form-urlencoded编码格式的数据,比如:application/json、application/xml等类型的数据。通常用于接收POST、DELETE等类型的请求数据,GET类型也可以适用。
在这里插入图片描述

2.更新用户的密码

代码如下
Controller层
  //更新用户的密码
    @PatchMapping("/updatePwd")
    public Result updatePwd(@RequestBody Map<String,String> params) {
        //1.校验参数
        String oldPwd = params.get("old_pwd");
        String newPwd = params.get("new_pwd");
        String rePwd = params.get("re_pwd");
        if (!StringUtils.hasLength(oldPwd) || !StringUtils.hasLength(newPwd) || !StringUtils.hasLength(rePwd))
        {
            return Result.error("缺少密码");
        }

        //查询原密码是否正确
        Map<String,Object> map = ThreadLocalUtil.get();
        String username = (String) map.get("username");
        User loginUser = userService.findByUserName(username);
        if (!loginUser.getPassword().equals(Md5Util.getMD5String(oldPwd))) {
            //原密码不正确
            return Result.error("原密码错误");
        }
        //两次输入的密码是否一致
        if (!rePwd.equals(newPwd)){
            return Result.error("两次填写的密码不一致");
        }

        //2.进行更新密码
        userService.updatePwd(newPwd);
        return Result.success();
    }

Service层

 @Override
    public void updatePwd(String newPwd) {
        //获取线程中用户的ID
        Map<String ,Object> map = ThreadLocalUtil.get();
        Integer id = (Integer) map.get("id");
        userMapper.updatePwd(Md5Util.getMD5String(newPwd),id);
    }

Mapper层

@Update("update user set password=#{password},update_time=now() where id=#{id}")
    void updatePwd(String password, Integer id);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值