mybatis更新操作中,如果有要更新为null的字段,调用up
2020-08-05 本文已影响0人
cmeizu
-
数据表的数据改变之前
image.png -
如果直接传null值用用updateId的方法;
-
入参:
{
"age": 30,
"id": 9,
"name": null,
"sex": "M"
}
更新代码
//第一种调用更新方法
User user = new User();
BeanUtils.copyProperties(userDTO, user);
return userMapper.updateById(user);
执行后的结果
image.png
- 可以看到name,字段改为numm,但是并没有更新.而age是更新了的.
另一种更新的方式.
UpdateWrapper<User> uw = new UpdateWrapper<>();
uw.lambda()
.set(User::getAge, userDTO.getAge())
.set(User::getName, userDTO.getName())
//这个很重要,是where条件,否则一张表就毁了.
.eq(User::getId, userDTO.getId());
return userMapper.update(null, uw);
image.png再次执行查看结果
就能更新为null了.
另一种是在实体类上加上注解,不过不建议.
/**
* 用户姓名
*/
@TableField(value = "name",updateStrategy = FieldStrategy.IGNORED)
private String name;
这样用第一种方法也是可以的.前提都是这个字段可以为null.
image.png