mybatis-plus 更新策略之更新null字段

mybatisPlus 在使用其封装的方法进行更新实体类时,默认是不会去更新null字段的(会更新空字符串"")。然后我们的业务场景中经常会遇到需要更新null的情况,例如日期赋值为null,下面是处理方法:

mybatis-plus FieldStrategy 有三种策略:
IGNORED:0 忽略
NOT_NULL:1 非 NULL,默认策略
NOT_EMPTY:2 非空

解决方案一

1.实体的字段注解添加属性:strategy,但会在查询的时候也会拼接上null:
birthday = null

//在该字段上加上注解  strategy = FieldStrategy.IGNORED 即可
	/**
     * 生日
     */
    @TableField(value = "BIRTHDAY",strategy = FieldStrategy.IGNORED)
    private Date birthda
### MyBatis-Plus 字段更新策略配置与使用 #### 配置字段更新策略 MyBatis-Plus 提供了多种字段更新策略来控制实体类属性为空时的行为。默认情况下,当实体类中的某个字段为 `null` 时,在执行更新操作时会将其对应的数据库列设为 `NULL` 值。然而,这种行为可能不是总是期望的结果。 为了改变这一行为,可以调整字段更新策略。具体来说,通过设置 `field-strategy` 参数可以选择不同的更新方式: - **IGNORED**: 当实体对象中有字段值为 `null` 时不更新字段- **NOT_NULL**: 只有当字段不为 `null` 才进行更新(即默认策略); - **NOT_EMPTY**: 如果字段既不是 `null` 也不是空字符串才更新[^2]。 这些选项可以在全局范围内应用,也可以针对特定表或字段单独指定。 #### 修改全局配置文件 要在整个项目中统一更改字段更新策略,可在 Spring Boot 的 application.yml 文件里添加如下配置项: ```yaml mybatis-plus: global-config: db-config: field-strategy: not_empty # 设置为 NOT_EMPTY 策略 ``` 这样做的好处是可以一次性影响所有映射关系下的字段更新逻辑,无需逐个定义。 #### 单独设定某张表/字段更新策略 如果只想对某些特殊表格或者个别字段做特别处理,则可以直接在实体类上利用@TableField 注解来进行局部定制化配置: ```java import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.TableField; public class User { @TableField(updateStrategy = FieldStrategy.NOT_EMPTY) private String nickname; } ``` 上述代码片段展示了如何仅对于 `User` 表内的 `nickname` 属性采用 "非空则更新" 的规则。 另外需要注意的是,除了以上提到的方式外,还可以借助 XML 映射文件完成更复杂的场景需求,比如动态决定哪些条件满足时应该跳过某些字段等等[^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值