洋不在江州头像

Spring+Oracle项目,Date时间类型映射丢失精度

1、问题描述:

使用mybatis-plus的分页查询查询出来的创建时间没有精度,丢失时分秒。后发现其他地方获取到的数据都丢失精度

2、排查问题:

  1. 创建后立马去看了数据库存的时间没问题,后面查看mybatis的执行日志,发现也是有的
  2. 后面我打印出来查询到的数据又是没有的
  3. 后面我有更新数据,发现数据库的创建时间精度也丢失了
  4. 总结一下,就是说因为获取到的数据已经丢失精度,导致后续更新也将这个丢失精度的日期插入进数据库了。

3、解决问题:

  1. 最开始我还怀疑是mybatis的问题,因为之前sql执行日志中是可以看到具体时间的。就开始网上查询各种mybatis的相关的配置,但是没解决
  2. 后面就打印了具体的数据出来看,精度又是没有的(不能全信mybatis执行打印的sql日志)
  3. 将java实体类中的Date日期类型改为string类型,查询没问题,这时候确定是类型映射出问题了,string能解决这个问题,但是我不行再新增的时候还要单独对创建时间做处理
  4. 这时候就尝试了用handler去改变这个映射,但是也不行
  5. 最后查了一下关于ojdbc相关的数据映射:JDBC Reference Information这里他这个映射的oracle.sql.Date类型,这个类型在旧版中会映射到java.sql.Date这个类型,这就是导致精度丢失。
  6. 所以这里就升版本来解决,由于这个项目比较旧了,我这里就没有跨度很大的去升级,我原来ojdbc版本:10.2.0.4.0,现升级到:11.2.0.4

效果:

这是之前部署的,没改之前,获取到的数据,刚新增的也是一样精度全丢失:

这是现在改之后的,新增一条数据后的,精度没有丢失:

欧克,到这里完美解决。

大家要找ojdbc的版本可以从这里面找:JDBC and UCP Downloads page

转载自 CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/2301_80156181/article/details/169161146

文章来源转载

评论

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--