MyBatis-Plus 更新字段为 null 为何失效?

  1. 背景:使用MyBatis-Plus更新一个字段(类型为LocalDateTime)为null,但是数据库依旧是之前的时间,没有更新为null成功

  2. 查找问题:由 MyBatis-Plus 的字段更新策略(FieldStrategy)所决定的默认行为,即默认情况下,MyBatis-Plus 使用 FieldStrategy.NOT_NULL,即自动跳过所有 null 值字段,导致无法更新为 null

  3. 解决方案:

  4. 方案一:通过 @TableField 注解修改单个字段的更新策略

    java 复制代码
    @TableField(value = "out_start_date", insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED)
        private LocalDateTime outStartDate;
  5. 方案二:使用 UpdateWrapper 显式指定字段更新

    java 复制代码
    barnInfoMapper.update(null, new UpdateWrapper<BarnInfo>().eq("id", 10010L).set("outStartDate", null));
  6. 方案三:全局策略配置:统一管理字段处理行为,在 application.yml 中配置全局字段策略【注意:可能导致意外的 null 写入】

    java 复制代码
    mybatis-plus:
      global-config:
        db-config:
          field-strategy: IGNORED
相关推荐
计算机_毕业设计9 分钟前
java-springboot数字藏品系统 基于 SpringBoot 的区块链数字艺术品交易平台 Java 微服务架构下的加密藏品展示与拍卖系统计算机毕业设计
java·spring boot·课程设计
ONVO ncen10 分钟前
Redis6.2.6下载和安装
java
丑八怪大丑12 分钟前
JDK8-17新特性
java·开发语言
京师20万禁军教头23 分钟前
37面向对象(高级)-main方法
java
书源丶23 分钟前
三十五、Java 泛型——类型安全的「万能模板」
java·开发语言·安全
琢磨先生David27 分钟前
电信行业数据库开发的一些经验
数据库·数据库开发
key_3_feng31 分钟前
数据库Skill开发教程:从零构建SQLite应用
数据库·sqlite·skill
2301_8125396740 分钟前
Golang怎么实现网页爬虫抓取数据_Golang如何用colly框架快速构建爬虫采集程序【教程】
jvm·数据库·python
dovens1 小时前
SpringBoot集成MQTT客户端
java·spring boot·后端
❀͜͡傀儡师1 小时前
Spring Boot 集成 RocksDB 实战:打造高性能 KV 存储加速层
java·spring boot·后端·rocksdb