-
背景:使用MyBatis-Plus更新一个字段(类型为LocalDateTime)为null,但是数据库依旧是之前的时间,没有更新为null成功
-
查找问题:由 MyBatis-Plus 的字段更新策略(FieldStrategy)所决定的默认行为,即默认情况下,MyBatis-Plus 使用
FieldStrategy.NOT_NULL,即自动跳过所有 null 值字段,导致无法更新为 null -
解决方案:
-
方案一:通过
@TableField注解修改单个字段的更新策略java@TableField(value = "out_start_date", insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED) private LocalDateTime outStartDate; -
方案二:使用 UpdateWrapper 显式指定字段更新
javabarnInfoMapper.update(null, new UpdateWrapper<BarnInfo>().eq("id", 10010L).set("outStartDate", null)); -
方案三:全局策略配置:统一管理字段处理行为,在 application.yml 中配置全局字段策略【注意:可能导致意外的 null 写入】
javamybatis-plus: global-config: db-config: field-strategy: IGNORED
MyBatis-Plus 更新字段为 null 为何失效?
胡闹542025-12-28 8:18
相关推荐
流星白龙6 分钟前
【MySQL高阶】26.事务(1)Zella折耳根20 分钟前
复习篇-继承和接口程序员二叉26 分钟前
【JVM】OOM详解+JVM参数+FullGC排查+CPU飙高+死锁+内存泄漏+命令大全云烟成雨TD27 分钟前
Spring AI 1.x 系列【47】 MCP Annotations 模块三十..44 分钟前
Redis 核心原理与高可用架构实践不知名的老吴1 小时前
线程的生命周期之线程同步协享科技1 小时前
Spring Boot 与 Go 双服务架构实践:从单体拆分到通信设计这个DBA有点耶1 小时前
索引优化深潜(下):索引合并、ICP 与索引设计的实战法则努力努力再努力wz1 小时前
【内存管理与高并发内存池系列】从 mmap 到 malloc:文件映射、匿名映射与 glibc 内存分配机制详解码语智行2 小时前
地图上图、空间拓扑查询示例