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
<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);
作者:konny
链接:https://juejin.cn/post/7032158064702652423