alibaba/druid和mybatisplus的LocalDateTime类型不兼容问题

开发环境

​数据库:Sql Server

项目:SpringBoot 2.1.3

持久层:mybatis-plus 3.3.0

连接池:druid 1.1.10

<dependency>    <groupId>com.alibaba</groupId>    <artifactId>druid</artifactId>    <version>1.1.10</version></dependency><dependency>    <groupId>com.baomidou</groupId>    <artifactId>mybatis-plus-boot-starter</artifactId>    <version>3.3.0</version></dependency>

为什么先要介绍下我的项目所涉及的版本,其实项目中遇到的bug多多少少有些版本之间不兼容的问题,这点是不能忽略的。不然百度一大堆有的没的,最后发现是版本的问题,瞬间心态炸了不是。

 

最近在做项目的时候,遇到了一个问题,DateTime字段的类型竟然和LocalDateTime类型序列化映射失败?

 

看下图,这个字段在Sql Server中是DateTime类型,但在entity中是LocalDateTime。按道理来说是没问题的,JDK8新增的特性,映射肯定没问题的呀!

 

但是在查询完成后,返回List<T>在映射关系字段时,抛出了异常信息。

 

我与阁下无冤无仇,阁下为何百般刁难???

不过我喜欢,面对困难最好的办法,就是逃避困难,关机睡觉,美滋滋~~

 

啊呸,开什么玩笑,面对困难最好的办法,就是战胜困难,奥利给~~~~

 

于是,百度一波,百度完,我.....我去你的吧

 

百度1小时等于啥也没干,尝试升级druid的版本至1.1.18.

 

然后运行....

Method com/microsoft/sqlserver/jdbc/SQLServerResultSet.getObject(Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/Object; is abstract

 

好像把聋子治死了......这不扯呢吗

 

得了,不偷懒了,跟代码调试,但并看不出什么问题,只是在序列化映射实体类的时候发生的异常,问题就在这,但如何解决还是得看官方怎么说。

 

强烈建议各位,有事尽量看官方文档,如果没有详细的,再去百度,博客等等搜索,不然百度2小时,啥也干不成。

 

“那你还写这文章干嘛?你都让我们去看官方文档了,有毛病不是?”

“Ennnmm...你好像说的有点道理,但我从一开始就说了,我写文章的目的第一是记录我的程序员成长之路,其次分享给其它同学们,有好的地方交流学习,有不好的地方,希望大佬能指出,这是一笔“财富”啊~”

 

 

解决办法:

查阅官方文档后,直接刺激了我的脑瓜子,官方写的清清楚楚....

 

当然这只是其中一种方式,有的可能项目版本低,更迭幅度不能过大,避免使用中的项目出现未知问题,那在推荐其它3种办法:

1.将mybatis-plus的版本降至3.2.0或以下

2.将LocalDateTime类型更换成Date

3.添加pom依赖(推荐)

<dependency>    <groupId>org.mybatis</groupId>    <artifactId>mybatis-typehandlers-jsr310</artifactId>    <version>1.0.2</version></dependency>

 

至于选择哪种,使用时择优处理就行~

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 17
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值