数据库字段为int bigint Date 类型,修改数据时如何修改为空

Blade 已结 1 1899

一、该问题的重现步骤是什么?

1. 数据库中的int bigint  Date 类型的字段,后端调用updateById方法,想修改为null值,修改不了空,只能自己在mapper中写sql语句,有没有简单方法实现,清空这些字段的值,项目中用到的比较多

2. 

3.


二、你期待的结果是什么?实际看到的又是什么?

      给Date类型的字段赋值为null,调用修改方法,不起作用


三、你正在使用的是什么产品,什么版本?在什么操作系统上?

        bladex  2.6.0版本   window操作系统


四、请提供详细的错误堆栈信息,这很重要。


五、若有更多详细信息,请在下面提供。

1条回答
  •  admin
    admin (最佳回答者)
    2021-03-08 17:16

    这是mybatis-plus本身的配置,并且是鱼与熊掌的抉择问题。

    1、开启null值忽略更新,如果传过来的entity,有需求只需要修改一两个字段,那只需要把这几个字段赋值,其他为null,执行update方法后就会默认跳过这些null的字段。

    2、开启全局更新,传过来的entity,update会严格根据里面的值来判断,update做全字段更新,有值就更新为对应的值,null值就更新为null


    我们推荐选择第一种配置,在遇到需要null更新的时候,可以在entity字段上单独加注解@TableField(updateStrategy = FieldStrategy.IGNORED)或者UpdateWrapper.set("字段", null)或者sql来进行配置。

    若配置第二种,虽然null会入库了,但随之而来的是全局字段也都会更新了,风险较大。


    具体注解配置可见:https://mybatis.plus/guide/annotation.html#tablefield

    自定义字段策略,相关的几个配置,你测试一下就可以了。

    1 讨论(1)
提交回复