Mybatis saveAndUpdate空值不更新问题及解决

 更新时间:2023年02月08日 09:13:19   作者:专注,简单  
这篇文章主要介绍了Mybatis saveAndUpdate空值不更新问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

Mybatis saveAndUpdate空值不更新

@TableField注解有三种更新策略

public enum FieldStrategy {
    IGNORED,//参数为空也更新到数据库
    NOT_NULL,//参数不能为null
    NOT_EMPTY;//参数不能为空

    private FieldStrategy() {
    }
}

如下,如果想要name字段为空或者null时也更新数据库数据,注解上加 strategy = FieldStrategy.IGNORED

@TableField(strategy = FieldStrategy.IGNORED,value="name")
    private String name;

Mybatis使用update更新值为null时不生效

纯属记录使用过程中遇到的问题更新null值没有生效的问题解决办法,内容较为简单。

出现的问题

前端修改数据时把属性内容删除然后进行保存,默认传的null,后端更新时属性值为null,然后调用updateById进行更新时发现该属性还是原来的值:

name:"tt";
 
//前端页面把该属性内容进行删除传给我后端
{
name: null
}
 
//后端接收到的
name: null
 
//使用该方法进行更新
updateById();
 
//结果name还是等于更新前的值
name: "tt";

后面百度发现该update方法不会对属性null的进行更新

原因

mybatis-plus FieldStrategy 有三种策略:

  • IGNORED:忽略
  • NOT_NULL:非 NULL,默认策略
  • NOT_EMPTY:非空

默认非空,所有更新时不生效的问题

解决方法

设置全局的field-strategy 

这样全局配置会把所有的属性都忽略,对于一些不需要改的属性可能会影响业务的准确性。

②给单独的属性设置field-strategy

根据实际应用情况对某些属性增加该注解来忽略策略

@TableField(strategy=FieldStrategy.IGNORED)

这样增加该注解的属性就可以使用updateById()方法进行更新null值。

------当然还有其他的好的方法也可以去参考

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java中切面的使用方法举例详解

    Java中切面的使用方法举例详解

    这篇文章主要介绍了Java中切面编程(AOP)的基本概念、原理及实现方式,AOP通过将横切关注点模块化为切面,使代码更易于维护和扩展,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-03-03
  • 如何获取java类中的属性注释

    如何获取java类中的属性注释

    在开发中,有时需要获取Java类的属性注释,尤其是当JPA生成的表缺少注释时,可以通过jdk自带的tools.jar工具包来实现,方法类似于生成javadoc文档,需要在pom.xml文件中导入tools.jar的依赖,该jar文件一般位于JAVA_HOME/lib目录下
    2024-09-09
  • Java使用定时器编写一个简单的抢红包小游戏

    Java使用定时器编写一个简单的抢红包小游戏

    这篇文章主要为大家介绍了Java如何使用定时器编写一个简单的抢红包小游戏,文中的示例代码讲解详细,感兴趣的小伙伴可以尝试一下
    2022-07-07
  • Linux系统Java环境配置教程

    Linux系统Java环境配置教程

    这篇文章给大家介绍的Linux 系统Java环境配置教程,非常不错,具有参考借鉴价值,需要的朋友参考下吧
    2018-05-05
  • JavaSE实现猜拳游戏

    JavaSE实现猜拳游戏

    这篇文章主要为大家详细介绍了JavaSE实现猜拳游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-01-01
  • Java根据日期计算星期几的四种方法

    Java根据日期计算星期几的四种方法

    在我们日常业务代码中,经常要用到星期几,下面这篇文章主要给大家介绍了关于Java根据日期计算星期几的四种方法,文中通过代码将每种实现的非常详细,需要的朋友可以参考下
    2023-09-09
  • Spring加载属性文件方式(自动加载优先级问题)

    Spring加载属性文件方式(自动加载优先级问题)

    这篇文章主要介绍了Spring加载属性文件方式(自动加载优先级问题),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • Java实现的基于socket通信的实例代码

    Java实现的基于socket通信的实例代码

    Java实现的基于socket通信的实例代码,需要的朋友可以参考一下
    2013-03-03
  • Java全面细致讲解==和equals的使用

    Java全面细致讲解==和equals的使用

    这篇文章主要介绍了Java中==和equals()的区别,,==可以使用在基本数据类型变量和引用数据类型变量中,equals()是方法,只能用于引用数据类型,需要的朋友可以参考下
    2022-05-05
  • HashMap工作原理_动力节点Java学院整理

    HashMap工作原理_动力节点Java学院整理

    这篇文章主要介绍了HashMap工作原理_动力节点Java学院整理,需要的朋友可以参考下
    2017-04-04

最新评论