当前位置: 首页 > 编程笔记 >

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

洪增
2023-03-14
本文向大家介绍详解Mybatis-plus中更新date类型数据遇到的坑,包括了详解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类型内容请搜索小牛知识库以前的文章或继续浏览下面的相关文章希望大家以后多多支持小牛知识库!

 类似资料:
  • 本文向大家介绍Mybatis-Plus和Mybatis的区别详解,包括了Mybatis-Plus和Mybatis的区别详解的使用技巧和注意事项,需要的朋友参考一下 原文:https://blog.csdn.net/qq_34508530/article/details/88943858 . 区别一 如果Mybatis Plus是扳手,那Mybatis Generator就是生产扳手的工厂。 通俗来

  • 本文向大家介绍详解iOS开发中解析JSON中的boolean类型的数据遇到的问题,包括了详解iOS开发中解析JSON中的boolean类型的数据遇到的问题的使用技巧和注意事项,需要的朋友参考一下 问题描述: Xcode中打印的JSON数据: 网页请求返回的JSON数据: 很明显,这里manage字段和share字段明显是boolean类型的数据。但是,用BOOL类接收这两个字段的数据, 得到的结果

  • 本文向大家介绍springboot+swagger2.10.5+mybatis-plus 入门详解,包括了springboot+swagger2.10.5+mybatis-plus 入门详解的使用技巧和注意事项,需要的朋友参考一下 最新idea2020安装部署超详细教程 懂得懂的 2020.3 2020.2.4 2020.2.3 2020.2.2 20.2.1 2019.3 2018.3 最新20

  • 本文向大家介绍springboot集成mybatis-plus遇到的问题及解决方法,包括了springboot集成mybatis-plus遇到的问题及解决方法的使用技巧和注意事项,需要的朋友参考一下 在使用spring boot集成mybatis-plus的过程中遇到的问题 如图, 首先我放xml的包的是没问题的,而是引入的架包和配置问题,问题配置如下 解决方法:请将mybatis-plus改成m

  • 本文向大家介绍详解Python 中的 defaultdict 数据类型,包括了详解Python 中的 defaultdict 数据类型的使用技巧和注意事项,需要的朋友参考一下 这篇文章给大家介绍Python 中的 defaultdict 数据类型,具体内容如下所示: 官方网址 首先,defaultdict 是 dict 的一个子类。通常 Python 中字典(dict)这种数据类型是通过键值对来存

  • 本文向大家介绍JavaScript数据类型详解,包括了JavaScript数据类型详解的使用技巧和注意事项,需要的朋友参考一下 数据类型   JavaScript中有5种简单数据类型(也称为基本数据类型):Undefined、Null、Boolean、Number和String。还有1种复杂数据类型——Object,Object本质上是由一组无序的名值对组成的。 typeof操作符   介于Jav