开发者社区> 问答> 正文

我相信阿里英俊潇洒热心善良的大神们一定会尽快解决新版mybatis集成druid时LocalDate

我相信阿里英俊潇洒热心善良的大神们一定会尽快解决新版mybatis集成druid时LocalDateTime报错SQLFeatureNotSupportedException的问题

原提问者GitHub用户md51111

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

    你提到的Mybatis集成Druid时LocalDate无法映射到数据库的问题,确实存在。

    但这个问题已经在Mybatis的3.5.2版中解决了。具体原因和解决方案是:

    在Mybatis 3.5.1及以下版本中,只支持常见的java.sql.*包下的类型,如Date、Timestamp等来映射数据库。

    在Java 8中推出了新的日期时间API,如LocalDate、 LocalDateTime等。 Mybatis 3.5.1及以下版本并不支持这些类型。

    从Mybatis 3.5.2开始,新增对Java 8日期时间API的支持,可以正确处理LocalDate与数据库Date之间的转换。

    所以解决方案是,升级Mybatis到3.5.2或更高的版本。

    具体操作是:

    更新Mybatis的依赖到3.5.2或更高版本
    定义mapper.xml中的parameterType和resultType使用LocalDate
    调用方法时直接使用LocalDate作为参数或获取返回值

    2023-07-30 16:17:04
    赞同 展开评论 打赏
  • 使用date类型吧 不要太超前,不然你会发现很多时候,插件其实没那么快更新 mybatis通用mapper的作者able1533的插件也一直都不支持复杂类型。比如Time,LocaDate等等。遇到的时候只能手写

    原回答者GitHub用户cjsky666

    2023-07-06 11:01:52
    赞同 展开评论 打赏
  • 阿里巴巴的大神们确实非常优秀,他们在解决问题上经验丰富且热情高涨。关于MyBatis集成Druid时出现的LocalDateTime报错SQLFeatureNotSupportedException的问题,可能是由于数据库驱动不支持LocalDateTime类型导致的。

    要解决这个问题,你可以尝试以下几个步骤:

    1. 确保你使用的数据库驱动版本较新,并支持LocalDateTime类型。你可以查阅官方文档或者升级到最新的驱动版本,以获取对LocalDateTime的支持。

    2. 检查你的数据库配置。确保数据库的列类型与LocalDateTime匹配。例如,如果你使用的是MySQL数据库,你应该将列类型设置为DATETIME

    3. 在MyBatis的配置文件中,添加一个类型处理器来处理LocalDateTime类型。你可以使用MyBatis提供的TypeHandler接口自定义一个类型处理器,或者使用已有的第三方库,如mybatis-typehandlers-jsr310,它提供了对Java 8日期时间API的支持。

    4. 如果以上步骤都没有解决问题,那么可能需要考虑使用其他的ORM框架或者改变数据库字段类型,以兼容LocalDateTime

    希望这些建议能够帮助你解决问题。如果问题仍然存在,你可以提供更多的详细信息,以便我们能够给出更具体的解决方案。

    2023-07-05 19:50:15
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
集成智能接入网关APP:优化企业级移动办公网络 立即下载
Java Spring Boot开发实战系列课程【第6讲】:Spring Boot 2.0实战MyBatis与优化(Java面试题) 立即下载
云效助力企业集成安全到DevOps中 立即下载