问题:

使用mybatis-plus自动生成日期的出现 Error attempting to get column ‘created_time’
from result set. Cause: java.sql.SQLFeatureNotSupportedException异常

原因:

因为我们集成了durid数据源1.1.18 mybatis-plus版本是3.2.0

分析:

mybatis-Plus3.1.0及之前的版本,依赖的是mybatis 3.5.0,
mybatis-Plus3.1.1升级了mybatis的依赖到3.5.1,而mybatis 3.5.1 对于新日期类型,需要JDBC
driver支持JDBC 4.2
API.LocalDateTime等新日期类型处理方式升级,但druid在1.1.21版本之前不支持,那么就会出现新日期类型报错

三种解决方案:
第一种
在generator之前时候配置时间生成策略
在DateType源码中有三种策略可供选择 如下图 ↓ ↓ ↓
在这里插入图片描述

在生成的时候全局配置里面配置DateType为ONLY_DATE即可

GlobalConfig gc = new GlobalConfig();
String projectPath = System.getProperty("user.dir");
gc.setOutputDir(projectPath + "/src/main/java");
gc.setAuthor("administrator");
gc.setOpen(false);
gc.setServiceName("%sService");//去掉接口上的 I
gc.setDateType(DateType.ONLY_DATE);//配置时间类型策略
public enum DateType {
    /**
     * 只使用 java.util.date 代替
     */
    ONLY_DATE,
    /**
     * 使用 java.sql 包下的
     */
    SQL_PACK,
    /**
     * 使用 java.time 包下的
     * <p>java8 新的时间类型</p>
     */
    TIME_PACK
}

第二种

升级druid1.1.21解决这个问题

第三种

降低mybatis-plus版本到3.1.0解决此问题

总结:

三种方案都可解决此问题。 第一种是一个较稳妥的方案。毕竟修改和降低版本可能引发别的问题,从而影响整个系统。

原文链接:https://blog.csdn.net/qq_42767653/article/details/112323303

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐