使用mybatis-plus想要修改某字段为null问题

 更新时间:2023年02月22日 15:28:31   作者:普通网友  
这篇文章主要介绍了使用mybatis-plus想要修改某字段为null问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

mybatis-plus想要修改某字段为null

问题场景

使用mybatis + mybatisPlus进行修改某字段,想要将其设为null, 但执行时没有成功。

原因

mybatis-plus会将所有为空的字段在修改时进行过滤,不进行设为空的修改操作。

解决办法

在相关字段上加上注解

@TableField(strategy = FieldStrategy.IGNORED)

例:

@TableField(strategy = FieldStrategy.IGNORED)
private Long classId;

mybatis-plus更新字段为null不生效

异常说明

mapper.updateById()时,set为null未生效,其他字段更新

periodRecordOriginal.setSettleTime(null);
periodRecordOriginal.setActualSettleTime(null);
periodRecordOriginal.setSettleStatus(0);
int i = periodRecordMapper.updateById(periodRecordOriginal);

原理

MyBatis-Plus对字段的验证策略导致的,MyBatis-Plus默认进⾏了不是全量更新的策略,默认忽略为null 的字段的

解决办法

1)修改MyBatis-Plus 全局默认策略

缺点:这样做会对所有的字段都忽略判断,如果一些字段不想要修改,但是传值的时候没有传递过来,就会被更新为null

mybatis-plus:
  global-config:
      #字段策略 0:"忽略判断",1:"非 NULL 判断",2:"非空判断"
    field-strategy: 0

2)修改实体类注解,改变字段的忽略判断

缺点:需要注意数据库字段是否设置为 非null ,如果为非null 也更新不成功

@TableField( updateStrategy = FieldStrategy.IGNORED)
    private Date settleTime;

总结

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

相关文章

  • Java+Redis撤销重做功能实现

    Java+Redis撤销重做功能实现

    这篇文章主要介绍了Java+Redis实现撤销重做功能,需要考虑撤销的最大步数,撤销之后穿插着其他操作则不能再重做,所以引入分布式锁Redisson进行加锁处理,防止对图表的操作有并发请求导致处理撤销逻辑混乱,感兴趣的朋友跟随小编一起看看吧
    2023-05-05
  • java排序算法之_选择排序(实例讲解)

    java排序算法之_选择排序(实例讲解)

    下面小编就为大家带来一篇java排序算法之_选择排序(实例讲解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • spring学习之参数传递与检验详解

    spring学习之参数传递与检验详解

    这篇文章主要给大家介绍了关于spring参数传递与检验的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作能带来一定的帮助,需要的朋友们下面跟着小编来一起学习学习吧。
    2017-07-07
  • Spring Boot中@Conditional注解介绍

    Spring Boot中@Conditional注解介绍

    @Conditional表示仅当所有指定条件都匹配时,组件才有资格注册。该@Conditional注释可以在以下任一方式使用:作为任何@Bean方法的方法级注释、作为任何类的直接或间接注释的类型级别注释@Component,包括@Configuration类、作为元注释,目的是组成自定义构造型注释
    2022-09-09
  • 关于Spring Actuator的简单测试

    关于Spring Actuator的简单测试

    这篇文章主要介绍了关于Spring Actuator的简单测试,Spring-Actuator 是spring下的程序监控系统,通过简单的配置就可以查看程序的相关信息,本文提供了相关配置,需要的朋友可以参考下
    2023-10-10
  • Spring Boot整合Web项目常用功能详解

    Spring Boot整合Web项目常用功能详解

    这篇文章主要介绍了Spring Boot整合Web项目常用功能详解,在Web应用开发过程中,可以通过Spring Boot的Starter来将这些常用功能进行整合与集中维护,以达到开箱即用的目的。,需要的朋友可以参考下
    2019-06-06
  • java发送email一般步骤(实例讲解)

    java发送email一般步骤(实例讲解)

    下面小编就为大家带来一篇java发送email一般步骤(实例讲解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • 关于MVC与SpringMVC的介绍、区别、执行流程

    关于MVC与SpringMVC的介绍、区别、执行流程

    这篇文章主要介绍了关于MVC与SpringMVC的介绍、区别、执行流程,MVC框架的主要目标是将应用程序的业务逻辑(Model)与用户界面(View)分离开来,从而提高应用程序的可维护性和可扩展性,需要的朋友可以参考下
    2023-05-05
  • SpringBoot引入SPEL模板字符串替换的两种方式

    SpringBoot引入SPEL模板字符串替换的两种方式

    在 Spring Boot 中,我们可以使用字符串替换工具类来实现这些功能,本文主要介绍了SpringBoot引入SPEL模板字符串替换的两种方式,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03
  • redis redisTemplate数据类型基础操作

    redis redisTemplate数据类型基础操作

    这篇文章主要介绍了redis redisTemplate数据类型基础操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06

最新评论