开发者社区> 问答> 正文

mybatis 3.51版本的LocalDateTime映射报SQLFeatureNotSuppor

DruidPooledResultSet这个类的getObject方法 public T getObject(String columnLabel, Class type) throws SQLException { throw new SQLFeatureNotSupportedException(); } mybatis中的LocalDateTimeTypeHandler调用getNullableResult public LocalDateTime getNullableResult(ResultSet rs, int columnIndex) throws SQLException { return (LocalDateTime)rs.getObject(columnIndex, LocalDateTime.class); }

原提问者GitHub用户wangzhedong

展开
收起
山海行 2023-07-05 19:38:25 58 0
3 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    MyBatis 3.5.1版本映射LocalDateTime类型会报SQLFeatureNotSupportedException是已知的问题。

    具体原因是:

    MyBatis 3.5.1支持Java 8的日期时间API,包括LocalDateTime。

    但是在生成SQL语句时,只支持java.sql.Date和java.util.Date。

    并没有对LocalDateTime进行特殊处理。

    因此在使用LocalDateTime映射结果集时,会报不支持的特性异常。

    解决这个问题的方式有以下几种:

    升级MyBatis到3.5.2或更高版本
    从3.5.2版本开始,MyBatis增加了对LocalDateTime的支持,修复了这个bug。

    自定义TypeHandler处理LocalDateTime
    在3.5.1版本中,可以自定义TypeHandler来处理LocalDateTime。

    使用java.sql.Timestamp作为映射类型
    将LocalDateTime转换为Timestamp,然后再进行映射。

    修改Mybatis源码添加LocalDateTime支持
    对3.5.1版本的源码进行修改,增加对LocalDateTime的特殊处理。

    2023-07-30 15:49:29
    赞同 展开评论 打赏
  • 我直接换了个连接池

    原回答者GitHub用户Starlight-tanxin

    2023-07-06 11:02:41
    赞同 展开评论 打赏
  • 根据您提供的代码和描述,看起来问题出在MyBatis 3.51版本的LocalDateTimeTypeHandler中的getNullableResult方法上。当调用rs.getObject(columnIndex, LocalDateTime.class)时,它会调用DruidPooledResultSetgetObject方法。然而,在该版本的DruidPooledResultSet中,getObject方法抛出了SQLFeatureNotSupportedException异常。

    这个异常表示当前数据库不支持通过getObject方法获取LocalDateTime类型的值。这可能是因为数据库驱动程序或数据库本身不支持将LocalDateTime直接映射到数据库的特定列类型。

    要解决这个问题,有几种方法可以尝试:

    1. 更新MyBatis版本:尝试升级到更高版本的MyBatis,以查看是否已经修复了此问题。

    2. 使用其他类型处理器:尝试使用其他类型处理器来处理LocalDateTime类型。例如,可以自定义一个类型处理器来将LocalDateTime转换为数据库支持的类型(如java.sql.Timestamp)。

    3. 修改数据库表结构:如果可能的话,修改数据库表结构以使用与LocalDateTime兼容的数据类型。

    4. 手动处理结果集:在查询结果中获取原始的日期时间值,然后在Java代码中手动转换为LocalDateTime对象。可以通过使用rs.getTimestamp(columnIndex)方法获取日期时间值,并使用Timestamp.toLocalDateTime()方法进行转换。

    以上是一些可能的解决方案,具体要根据您的情况和需求来选择适合的方法。

    2023-07-05 19:47:52
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Java Spring Boot开发实战系列课程【第6讲】:Spring Boot 2.0实战MyBatis与优化(Java面试题) 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载