栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

详解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.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类型内容请搜索考高分网以前的文章或继续浏览下面的相关文章希望大家以后多多支持考高分网!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/131126.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号