MybatisPlus更新部分字段

为什么要更新部分字段呢?假如现在有一个更新个人信息的一个接口,如果你更新全部字段的话,只要有人捕获到这个接口,然后通过这个接口去更改你的用户表的密码,是不是想想就哈人呢?所以这里就用到了更新部分字段,而不是一梭子全部更新。

UserController

 //更新个人信息
    @PostMapping("/userInfo")
    public ResponseResult updateUserInfo(@RequestBody User user){
        return userService.updateUserInfo(user);
    }

UserServiceImpl
所以下面这种是绝对不行的,不能更新全部字段。

   @Override
    public ResponseResult updateUserInfo(User user) {
        updateById(user);
        return ResponseResult.okResult();
    }

更新部分字段方法

方式一:通过set方法需要哪些字段,就set哪些字段,然后去更新即可

@Override
    public ResponseResult updateUserInfo(User userInfo) {
        // updateById(user);
        User user = new User();
        user.setAvatar(userInfo.getAvatar());
        user.setEmail(userInfo.getEmail());
        user.setId(userInfo.getId());
        user.setNickName(userInfo.getNickName());
        user.setSex(userInfo.getSex());
        updateById(user);
        return ResponseResult.okResult();
    }

第二种方式:通过UpdateWrapper的set方法指定某个字段的值

@Override
    public ResponseResult updateUserInfo(User userInfo) {
        UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();
        updateWrapper.eq("id",userInfo.getId());
        updateWrapper.set("avatar",userInfo.getAvatar());
        updateWrapper.set("email",userInfo.getEmail());
        updateWrapper.set("nick_name",userInfo.getNickName());
        updateWrapper.set("sex",userInfo.getSex());

        update(userInfo,updateWrapper);

        return ResponseResult.okResult();
    }
posted @ 2022-08-11 14:05  长情c  阅读(8448)  评论(0)    收藏  举报