详解Mybatis-plus中更新date类型数据遇到的坑

 更新时间:2020年10月15日 09:59:48   作者:爱钓鱼的Java  
这篇文章主要介绍了详解Mybatis-plus中更新date类型数据遇到的坑,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

最近一年的项目都是在使用Mybatis-plus,感觉挺好用的,也没遇到很多问题,但是在最近项目上线之后,遇到了一些新的需要,在进行新版本开发的时候就开始遇到坑了,今天来说一下更新数据中有date类型数据的时候会出现的问题。

实体类部分字段如下:

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ProductPo implements Serializable {
 /**
   * 产品主键,自增
   */
  private Long prdId;
  /**
   * 名称
   */
  private String prdName;
  /**
   * 价格
   */
  private Bigdecimal prdPrice;
  /**
   * 上市日期
   */
  private LocalDate listingDate;
  /**
   * 创建时间
   */
  private LocalDateTime createTime;
  /**
   * 修改时间
   */
  private LocalDateTime updateTime;
}

如果在更新的时候,将上市日期(listingDate)由之前的“2020-07-16”更新为null:

ProductPo po = ProductPo.builder.prdId(request.getPrdId).listingDate(null).updateTime(now(3)).build;

更新语句分为两种,第一种:

Integer rows = prdMapper.update(po, Wrappers.<ProductPo>lambdaUpdate().eq(ProductPo::getPrdId, request.getPrdId()));

第二种:

Integer rows = prdMapper.updateById(po);

这个时候你会发现,上市日期(listingDate)并没有被更新为空;有可能是因为在更新的时候,mybatis-plus将date类型为空的时候过滤掉了。

解决方法一:在字段上面加标签,不进行空判断过滤

@TableField(strategy = FieldStrategy.IGNORED)
private LocalDate listingDate;

解决方法二:在yml配置文件中进行全局配置

#mybatis-plus mapper包扫描地址
mybatis-plus:
 mapper-locations: classpath*:mapper/*/*.xml,classpath*:mapper/*.xml
 config-location: classpath:/mybatis-config.xml
 global-config:
  db-config:
   field-strategy: ignored

此处是对所有的操作都进行过滤,在官网上还有:insertStrategy,updateStrategy和selectStrategy,可以根据自己需要进行设置。
我个人还是选择了第一种解决方案,因为进行全局配置的时候,必须保证每次的传参都是全的,要不然会将数据置空或者没有将必填字段传值的时候会报错。

到此这篇关于详解Mybatis-plus中更新date类型数据遇到的坑的文章就介绍到这了,更多相关Mybatis-plus更新date类型内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 用Java设计实现多实例多库查询方式

    用Java设计实现多实例多库查询方式

    这篇文章主要介绍了用Java设计实现多实例多库查询方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • SpringBoot监听应用程序启动的生命周期事件的四种方法

    SpringBoot监听应用程序启动的生命周期事件的四种方法

    在 Spring Boot 中,监听应用程序启动的生命周期事件有多种方法,本文给大家就介绍了四种监听应用程序启动的生命周期事件的方法,并通过代码示例讲解的非常详细,具有一定的参考价值,需要的朋友可以参考下
    2024-07-07
  • Java详解如何将excel数据转为树形

    Java详解如何将excel数据转为树形

    在平常的办公工作中,excel数据的操作是最常见的需求,今天就来看一下通过Java如何来实现将excel数据转为树形,感兴趣的朋友可以了解下
    2022-08-08
  • Java中切面的使用方法举例详解

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

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

    Java中的LinkedHashMap详解

    这篇文章主要介绍了Java中的LinkedHashMap详解,LinkedHashMap继承自HashMap,它的多种操作都是建立在HashMap操作的基础上的,同HashMap不同的是,LinkedHashMap维护了一个Entry的双向链表,保证了插入的Entry中的顺序,需要的朋友可以参考下
    2023-09-09
  • IDEA下从零开始搭建SpringBoot工程的方法步骤

    IDEA下从零开始搭建SpringBoot工程的方法步骤

    这篇文章主要介绍了IDEA下从零开始搭建SpringBoot工程的方法步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • Java实战之兼职平台系统的实现

    Java实战之兼职平台系统的实现

    这篇文章主要介绍了如何利用Java编写一个兼职平台系统,采用到的技术有Springboot、SpringMVC、MyBatis、ThymeLeaf等,感兴趣的小伙伴可以了解一下
    2022-03-03
  • IDEA中的maven没有dependencies解决方案

    IDEA中的maven没有dependencies解决方案

    这篇文章主要介绍了IDEA中的maven没有dependencies解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • Java设计模式之java访问者模式详解

    Java设计模式之java访问者模式详解

    这篇文章主要介绍了JAVA设计模式之访问者模式,简单说明了访问者模式的原理,并结合实例分析了java访问者模式的定义与用法,需要的朋友可以参考下
    2021-09-09
  • Java实现SMS短信通发送手机验证码案例讲解

    Java实现SMS短信通发送手机验证码案例讲解

    这篇文章主要介绍了Java实现SMS短信通发送手机验证码案例讲解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08

最新评论