mybatis-plus的updateById不更新null值属性问题(mybatis-plus,3.2.0)


使用userService.updateById(user)时,发现user的Sex值并没有被设置为空:

User user = new User();
user.setId(5);
user.setSex(null);
return userService.updateById(user);

三种解决方法:

基于,mybatis-plus,3.2.0


    com.baomidou
    mybatis-plus-boot-starter
    3.2.0

1.全局配置

配置后全局有效,所有实体的所有null属性都会被更新,不太合适  
可选项目:
  IGNORED,
  NOT_NULL,(默认)
  NOT_EMPTY

mybatis-plus:
 global-config:
  db-config:
   field-strategy: ignored

2。实体类属性上配置

只有这一个字段为null会更新。后续使用updateById,都需要记得sex字段要不要赋值。适合字段默认为null的情况。

   @TableField(updateStrategy = FieldStrategy.IGNORED)
   private String sex;

3.自己手写update的sql  

其他地方,手动调用即可:
userMapper.updateUserSex(userId);

@Update("update t_user set f_sex=null where f_id=#{userId}")
void updateUserSex(@Param("userId") Long userId);



 

你可能感兴趣的:(数据库,mybatis)