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
相关推荐
小冷coding29 分钟前
【MySQL】MySQL 插入一条数据的完整流程(InnoDB 引擎)
数据库·mysql
Elias不吃糖41 分钟前
Java Lambda 表达式
java·开发语言·学习
情缘晓梦.1 小时前
C语言指针进阶
java·开发语言·算法
鲨莎分不晴1 小时前
Redis 基本指令与命令详解
数据库·redis·缓存
专注echarts研发20年2 小时前
工业级 Qt 业务窗体标杆实现・ResearchForm 类深度解析
数据库·qt·系统架构
南知意-3 小时前
IDEA 2025.3 版本安装指南(完整图文教程)
java·intellij-idea·开发工具·idea安装
码农水水3 小时前
蚂蚁Java面试被问:混沌工程在分布式系统中的应用
java·linux·开发语言·面试·职场和发展·php
海边的Kurisu3 小时前
苍穹外卖日记 | Day4 套餐模块
java·苍穹外卖
毕设源码-邱学长4 小时前
【开题答辩全过程】以 走失儿童寻找平台为例,包含答辩的问题和答案
java
周杰伦的稻香4 小时前
MySQL中常见的慢查询与优化
android·数据库·mysql