开发环境

​数据库: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>

 

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

GitHub 加速计划 / druid / druid
27.83 K
8.56 K
下载
阿里云计算平台DataWorks(https://help.aliyun.com/document_detail/137663.html) 团队出品,为监控而生的数据库连接池
最近提交(Master分支:1 个月前 )
f77b2f18 - 4 天前
a1536b8c - 7 天前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐