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

2,682 阅读1分钟

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

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

三种解决方法:

基于,mybatis-plus,3.2.0

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.2.0</version>
</dependency>

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

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

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