- myabtisplus 使用updateById() 方法更新,若字段为空字符或null默认会被myabtis-plus忽略,不会对数据库进行更新,造成更新null不生效。
解决方法如下:
- 注解指定策略
@Data
@ApiModel("代码仓库外部导入记录表")
@TableName("devops_commit_check_rule")
public class DevopsCommitCheckRule extends BaseEntity {
@TableField("gitlab_app_id")
@ApiModelProperty("代码仓库id")
private Integer gitlabAppId;
/**
* 该字段需要更新null或空值
*/
@TableField(value = "rule", updateStrategy = FieldStrategy.IGNORED)
@ApiModelProperty("校验规则,正则表达式")
private String rule;
}
- 全局设置(不推荐)
mybatis-plus:
global-config:
# 字段策略 0:忽略判断,直接拼SQL, 1:非NULL, 2:非空,3:默认;4:永远不加入SQL
field-strategy: 0
字段策略说明
com.baomidou.mybatisplus.annotation.TableField
/**
* 字段验证策略之 update: 当更新操作时,该字段拼接set语句时的策略
* <p>
* IGNORED: 直接拼接 update table_a set column=#{columnProperty}, 属性为null/空string都会被set进去
* NOT_NULL: update table_a set <if test="columnProperty != null">column=#{columnProperty}</if>
* NOT_EMPTY: update table_a set <if test="columnProperty != null and columnProperty!=''">column=#{columnProperty}</if>
* NOT_EMPTY 如果针对的是非 CharSequence 类型的字段则效果等于 NOT_NULL
*
* @since 3.1.2
*/
FieldStrategy updateStrategy() default FieldStrategy.DEFAULT;