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>
至于选择哪种,使用时择优处理就行~
更多推荐
所有评论(0)