mybatisPlus中的field-strategy(字段更新插入策略):null值插入和更新问题

mybatisPlus中null值插入和更新问题

配置mybatisPlus的项目中,默认进行了不是全量更新的策略:NOT_NULL。
即在利用updateWrapper更新时,会做null判断,如果传参数为null,就不会更新。
在实际项目需求中可能配置全局更新策略为:NOT_NULL,但是某些场景更新时需要插入这个null值进行更新。如何解决这个问题呢?

实际项目解决方法示例一

实际项目中,配置文件中配置全局字段策略为NOT_NULL。
在这里插入图片描述
需求:实际项目中,apply_teacher字段当它为null时需要把null值更新进去。
困难:因为全局字段策略为NOT_NULL,所以默认不会更新null值进去。
解决方法:
利用条件构造器当值为null时set为null。
代码:

Wrapper<StuApplyInfoEntity> updateWrapper = new UpdateWrapper<>();
((UpdateWrapper) updateWrapper).set(saveApply.getApplyTeacher() == null, "apply_teacher", null);

实际项目解决方法示例二

需求:state字段所有值都更新和插入。
困难:因为全局字段策略为NOT_NULL,所以默认不会更新null值进去。
解决方法:
在entity中设置state设置注解@TableField(),配置FieldStrategy为IGNORED。意思是"忽略判断",所有值都更新和插入。
代码:

@TableField(strategy = FieldStrategy.IGNORED, el = "state, jdbcType=VARCHAR")
private String state;

field-strategy字段更新插入策略介绍

枚举类FieldStrategy源码

public enum FieldStrategy {
    /**
     * 忽略判断
     */
    IGNORED,
    /**
     * 非NULL判断
     */
    NOT_NULL,
    /**
     * 非空判断
     */
    NOT_EMPTY,
    /**
     * 默认的,一般只用于注解里
     * <p>1. 在全局里代表 NOT_NULL</p>
     * <p>2. 在注解里代表 跟随全局</p>
     */
    DEFAULT
}

枚举类字段简介

IGNORED:“忽略判断”,所有字段都更新和插入。
NOT_NULL:“非 NULL 判断”,只更新和插入非NULL值。
NOT_EMPTY:“非空判断”, 只更新和插入非NULL值且非空字符串。
DEFAULT: 默认的,一般只用于注解里。

  • 7
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值