使用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
其他地方,手动调用即可:
userMapper.updateUserSex(userId);
@Update("update t_user set f_sex=null where f_id=#{userId}")
void updateUserSex(@Param("userId") Long userId);