MyBatisPlus通过ID更新数据为NULL的四种方法

 更新时间:2025年08月14日 09:45:13   作者:行星008  
本文主要介绍了MyBatisPlus通过ID更新数据为NULL的实现方法,包括@TableField注解、UpdateWrapper、lambdaUpdate及全局配置,具有一定的参考价值,感兴趣的可以了解一下

在使用 MyBatis-Plus 通过 ID 更新数据时,若需将字段值设为 null,可参考以下解决方案:

方法一:使用@TableField注解

在实体类字段上添加注解,指定更新策略为忽略非空检查:

public class User {
    @TableField(strategy = FieldStrategy.IGNORED)
    private String email;
}

调用 updateById 时,该字段即使为 null 也会被更新。

方法二:使用UpdateWrapper手动设置

通过 UpdateWrapper 显式指定需更新的字段:

User user = new User();
user.setId(1L);

UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("id", user.getId())
             .set("email", null); // 显式设置 null

userMapper.update(null, updateWrapper);

此方法灵活控制需要更新的字段。

方法三:全局配置(谨慎使用)

在配置类中设置全局更新策略为忽略非空检查:

@Configuration
public class MybatisPlusConfig {
    @Bean
    public GlobalConfig globalConfig() {
        GlobalConfig config = new GlobalConfig();
        config.setDbConfig(new GlobalConfig.DbConfig()
                .setUpdateStrategy(FieldStrategy.IGNORED));
        return config;
    }
}

注意:此配置会影响所有更新操作,需确保数据库约束允许字段为 null

方法四:使用lambdaUpdate

通过 Lambda 表达式构建更新条件:

User user = new User();
user.setId(1L);

userMapper.lambdaUpdate()
          .eq(User::getId, user.getId())
          .set(User::getEmail, null)
          .update();

简洁且类型安全。

总结

  • 个别字段处理:使用 @TableField 注解。
  • 灵活单次更新:选择 UpdateWrapper 或 lambdaUpdate
  • 全局处理(谨慎):配置全局策略。

注意事项

  • 确保数据库字段允许 NULL,否则会引发异常。
  • 全局配置需全面测试,避免意外覆盖非空字段。
  • 根据 MyBatis-Plus 版本调整策略名称(如 FieldStrategy 在 3.x 后更名为 FieldFill 等)。

到此这篇关于MyBatisPlus通过ID更新数据为NULL的实现方法的文章就介绍到这了,更多相关MyBatisPlus更新为NULL内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MyBatis如何使用(一)

    MyBatis如何使用(一)

    这篇文章主要介绍了MyBatis如何使用(一)的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-07-07
  • Java虚拟机运行时数据区域汇总

    Java虚拟机运行时数据区域汇总

    这篇文章主要给大家介绍了关于Java虚拟机运行时数据区域的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Java具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-08-08
  • windows下zookeeper配置java环境变量的方法

    windows下zookeeper配置java环境变量的方法

    今天小编就为大家分享一篇关于windows下zookeeper配置java环境变量的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • IDEA解决springboot热部署失效问题(推荐)

    IDEA解决springboot热部署失效问题(推荐)

    热部署,就是在应用正在运行的时候升级软件,却不需要重新启动应用。这篇文章主要介绍了IDEA解决springboot热部署失效问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • SpringBoot单元测试解读

    SpringBoot单元测试解读

    SpringBoot提供了基于JUnit5的测试工具,方便进行测试,默认导入相关依赖,创建测试类,使用断言(Assertions类)进行断言操作,支持参数化测试
    2025-02-02
  • 关于ThreadLocal使用时OOM的讨论

    关于ThreadLocal使用时OOM的讨论

    这篇文章主要介绍了关于ThreadLocal使用时OOM的讨论,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-06-06
  • 浅谈JVM系列之从汇编角度分析NullCheck

    浅谈JVM系列之从汇编角度分析NullCheck

    在virtual call中执行nullcheck的时候,如果已经知道传递的参数是非空的。JIT会对代码进行优化吗?本文将详细介绍JVM系列之从汇编角度分析NullCheck。
    2021-06-06
  • java实现两个对象之间传值及简单的封装

    java实现两个对象之间传值及简单的封装

    这篇文章主要介绍了java实现两个对象之间传值及简单的封装,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • Java开发过程中关于异常处理的详解

    Java开发过程中关于异常处理的详解

    异常是程序中的一些错误,但不是所有错误都是异常,且错误有时候是可以避免的。比如说,你的代码少一个分号,那运行出来结果是提示是错误 java.lang.Error;如果你用System.out.println(11/0),那么你是因为你用0做了除数,会抛出 java.lang.ArithmeticException 的异常
    2021-10-10
  • Java警告:原发性版11需要目标发行版11的解决方法和步骤

    Java警告:原发性版11需要目标发行版11的解决方法和步骤

    这篇文章主要介绍了Java警告:原发性版11需要目标发行版11的解决方法和步骤,文中通过图文介绍的非常详细,对大家学习或者使用java具有一定的参考借鉴价值,需要的朋友可以参考下
    2025-04-04

最新评论