一、该问题的重现步骤是什么?
1. 数据库中的int bigint Date 类型的字段,后端调用updateById方法,想修改为null值,修改不了空,只能自己在mapper中写sql语句,有没有简单方法实现,清空这些字段的值,项目中用到的比较多
2.
3.
二、你期待的结果是什么?实际看到的又是什么?
给Date类型的字段赋值为null,调用修改方法,不起作用
三、你正在使用的是什么产品,什么版本?在什么操作系统上?
bladex 2.6.0版本 window操作系统
四、请提供详细的错误堆栈信息,这很重要。
五、若有更多详细信息,请在下面提供。
这是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
自定义字段策略,相关的几个配置,你测试一下就可以了。
扫一扫访问 Blade技术社区 移动端