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();
}