我相信阿里英俊潇洒热心善良的大神们一定会尽快解决新版mybatis集成druid时LocalDateTime报错SQLFeatureNotSupportedException的问题
原提问者GitHub用户md51111
你提到的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作为参数或获取返回值
使用date类型吧 不要太超前,不然你会发现很多时候,插件其实没那么快更新 mybatis通用mapper的作者able1533的插件也一直都不支持复杂类型。比如Time,LocaDate等等。遇到的时候只能手写
原回答者GitHub用户cjsky666
阿里巴巴的大神们确实非常优秀,他们在解决问题上经验丰富且热情高涨。关于MyBatis集成Druid时出现的LocalDateTime
报错SQLFeatureNotSupportedException
的问题,可能是由于数据库驱动不支持LocalDateTime
类型导致的。
要解决这个问题,你可以尝试以下几个步骤:
确保你使用的数据库驱动版本较新,并支持LocalDateTime
类型。你可以查阅官方文档或者升级到最新的驱动版本,以获取对LocalDateTime
的支持。
检查你的数据库配置。确保数据库的列类型与LocalDateTime
匹配。例如,如果你使用的是MySQL数据库,你应该将列类型设置为DATETIME
。
在MyBatis的配置文件中,添加一个类型处理器来处理LocalDateTime
类型。你可以使用MyBatis提供的TypeHandler
接口自定义一个类型处理器,或者使用已有的第三方库,如mybatis-typehandlers-jsr310
,它提供了对Java 8日期时间API的支持。
如果以上步骤都没有解决问题,那么可能需要考虑使用其他的ORM框架或者改变数据库字段类型,以兼容LocalDateTime
。
希望这些建议能够帮助你解决问题。如果问题仍然存在,你可以提供更多的详细信息,以便我们能够给出更具体的解决方案。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。