mybatisplus的updateById() 更新null失败

● myabtisplus 使用updateById() 方法更新,若字段为空字符或null默认会被myabtisplus忽略,不会对数据库进行更新。解决方法如下

  1. 注解指定策略
@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;

}
  1. 使用update()方法
User user = new User();
    user.setId(id);
    user.setNickName(null);
 
    userService.lambdaUpdate()
            .eq(User::getId, user.getId())
            .update(user);
  1. 全局配置(不推荐)
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;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值