在写java的时候,各种问题层出不穷。特别是对于新手来说。 头一次写java 项目,遇到问题后就只能百度搜索查询。
java开发中不常碰到的问题,例如:
引入包的版本问题。
版本不兼容问题。
我们是没发一次性知道的。只有在做某些特定时期的时候才能知晓。
就比如,笔者也是一个java新手,头一次的java项目中就遇到了如下问题:
项目使用 SpringBoot + Mybatis-plus
用到了LocalDateTime 类型。
然而在转换时候报错
Error attempting to get column 'XXX' from result set. Cause: java.sql.
这时候我们的解题思路是什么呢?
既然是类型问题,我们就必须找找类型的事。
查看数据库中的时间字段,发现类型是:datetime。
而我们的实际项目中使用的则是 LocalDatetime类型。
当我们确定后再尝试,会发现导致查询报错的就是这个类型问题。
那么如何解决这个问题呢?
最简单的就是更换druid。也就是集成了druid数据源的问题。通过查看mybatis-plus更新文档得知。
mybatis-plus 3.1.1+ 版本
使用了新版的jdbc,LocalDateTime等日期类型处理方式给做了一定的升级、但是我们集成进来的druid在1.1.21版本之前不支持LocalDateTime。
如上图所示,3.1.1版本之后做个升级处理
因此我们断定:
是因为com.alibaba 的版本问题。
解决方法:
- 切换版本号到1.1.22 即可消除问题
<dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.22</version> </dependency>
2.让mybatis-plus版本保持在3.1.0.
3.如果非要使用最新版本的mybatis-plus,我们就必须换掉druid数据源。采用spring boot 默认数据源。让它保持于mybatis-plus 的版本保持紧跟即可。