Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

3.1.1,mybatis 3.5.1中对于java.time包LocalDateTime,LocalDate,LocalTime类型的处理与mybatis 3.5.0有所不同 #1114

Closed
SanStoneY opened this issue May 7, 2019 · 23 comments

Comments

@SanStoneY
Copy link

当前使用版本(必须填写清楚,否则不予处理)

3.1.1

该问题是怎么引起的?(最新版上已修复的会直接close掉)

mybatis-plus 3.1.1版本更新了mybatis的版本,由原先的3.5.0更新到了3.5.1,但是因为mybatis 3.5.1版本对于java.time包下LocalDateTime,LocalDate,LocalTime类型的转换交由了JDBC,若JDBC组件不支持对于LocalDateTime类型的处理则会报错。现在项目中运用的是alibaba druid数据库连接池,在druid最新版本中尚不支持对于LocalDateTime的处理,会throw SQLFeatureNotSupportedException,提请注意。

image

image

重现步骤

1.定义实体类中某一字段类型为LocalDateTime或LocalDate或LocalTime
2.查询

报错信息

org.springframework.dao.InvalidDataAccessApiUsageException: Error attempting to get column 'creation_time' from result set. Cause: java.sql.SQLFeatureNotSupportedException
; null; nested exception is java.sql.SQLFeatureNotSupportedException
at org.springframework.jdbc.support.SQLExceptionSubclassTranslator.doTranslate(SQLExceptionSubclassTranslator.java:96)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)
at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:73)
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:446)
at com.sun.proxy.$Proxy72.selectOne(Unknown Source)
at org.mybatis.spring.SqlSessionTemplate.selectOne(SqlSessionTemplate.java:166)
at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:89)
at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:62)
at com.sun.proxy.$Proxy77.selectOne(Unknown Source)
at com.baomidou.mybatisplus.extension.service.impl.ServiceImpl.getOne(ServiceImpl.java:259)
at com.baomidou.mybatisplus.extension.service.IService.getOne(IService.java:192)
at top.uravity.iden.kernel.service.impl.SysUserServiceImpl.getSysUserByUsername(SysUserServiceImpl.java:148)
at top.uravity.iden.system.controller.SysLoginController.login(SysLoginController.java:89)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:189)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:892)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:797)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1038)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1005)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:897)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:882)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:112)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at top.uravity.iden.kernel.xss.XssFilter.doFilter(XssFilter.java:26)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:61)
at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108)
at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137)
at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66)
at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449)
at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)
at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)
at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)
at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:387)
at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)
at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:357)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:270)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:92)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:200)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:834)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1415)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)

@SanStoneY
Copy link
Author

SanStoneY commented May 7, 2019

问题不是mybatis-plus自身导致的,是druid 1.1.16导致的,究其原因,是因为3.1.1版本引用的mybatis 3.5.1修改了对于LocalDateTime的处理,然而druid还没有支持对于LocalDateTime,所以就报错了,如果有什么描述不清楚的,还请见谅,-_-

@SanStoneY SanStoneY changed the title mybatis 3.5.1中对于java.time包LocalDateTime,LocalDate,LocalTime类型的处理与mybatis 3.5.0有所不同 3.1.1,mybatis 3.5.1中对于java.time包LocalDateTime,LocalDate,LocalTime类型的处理与mybatis 3.5.0有所不同 May 7, 2019
@miemieYaho
Copy link
Member

换连接池

@SmNiuhe
Copy link

SmNiuhe commented May 21, 2019

一定要换连接池嘛,这么极端的嘛

@qmdx
Copy link
Member

qmdx commented May 21, 2019

HikariCP 值得用,百度下

@hocgin
Copy link

hocgin commented May 26, 2019

3.1.0 是正常的

@huluobo11
Copy link

durid的问题???为什么 我的mybatis-plus 3.1.1 +hikari 也不行。。。
image。我把mybatis-plus换到3.1.0 ,不换连接池,问题还在。。。

@huluobo11
Copy link

image
上面的写法会报错的,换成双冒号写法时,是正常的。。。

@5468sun
Copy link

5468sun commented Jul 20, 2019

连接池 换成 hicaricp 3.3.1 ,没有解决问题。只能将mp降回 3.1.0 了

@qmdx
Copy link
Member

qmdx commented Jul 20, 2019

连接池 换成 hicaricp 3.3.1 ,没有解决问题。只能将mp降回 3.1.0 了

jdbc 驱动换成新的,低版本的可能还没有做支持

@5468sun
Copy link

5468sun commented Jul 21, 2019

连接池 换成 hicaricp 3.3.1 ,没有解决问题。只能将mp降回 3.1.0 了

jdbc 驱动换成新的,低版本的可能还没有做支持

管用。多谢。

@cloud915
Copy link

mysql.connector.java 8.0.17
druid 1.1.20
mybatis.plus 3.2.0

可以

@rbw204
Copy link

rbw204 commented Oct 25, 2019

mysql.connector.java 8.0.17
druid 1.1.20
mybatis.plus 3.2.0

可以

我的还是不行,报错

@yao00jun
Copy link

mysql.connector.java 8.0.17
druid 1.1.20
mybatis.plus 3.2.0
可以

我的还是不行,报错

我也不行

@ChubChen
Copy link

mysql.connector.java 8.0.17
druid 1.1.20
mybatis.plus 3.2.0 试了可以感谢

@chgmxx
Copy link

chgmxx commented Dec 3, 2019

mysql.connector.java 8.0.17
druid 1.1.21
mybatis.plus 3.2.0
可以的

@fangtianq
Copy link

fangtianq commented Feb 5, 2020

druid 1.1.21解决了这个问题,亲测

<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>druid-spring-boot-starter</artifactId>
	<version>1.1.21</version>
</dependency>

@yusiwen
Copy link

yusiwen commented Apr 1, 2020

@fangtianq thanks, you save me a lot!

@leoFitz1024
Copy link

druid 1.1.21解决了这个问题,亲测

<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>druid-spring-boot-starter</artifactId>
	<version>1.1.21</version>
</dependency>

完美解决

@stjava
Copy link

stjava commented May 9, 2020

也可以通过引入依赖解决

org.mybatis mybatis-typehandlers-jsr310 1.0.1

https://www.jb51.net/article/123127.htm

@cutety
Copy link

cutety commented Sep 3, 2020

问题不是mybatis-plus自身导致的,是druid 1.1.16导致的,究其原因,是因为3.1.1版本引用的mybatis 3.5.1修改了对于LocalDateTime的处理,然而druid还没有支持对于LocalDateTime,所以就报错了,如果有什么描述不清楚的,还请见谅,-_-
可以了,给druid改成最新的就可以

@hdwmp123
Copy link

hdwmp123 commented Feb 6, 2021

这个问题最终结论是啥呢?

@cutety
Copy link

cutety commented Feb 6, 2021

这个问题最终结论是啥呢?

更新druid版本到最新

@flyhelanman
Copy link

springboot 2.5.6
mysql.connector.java 8.0.17
druid 1.1.22
mybatis.plus 3.4.3.4
可以
另外把数据源换成springboot默认的hikari也可以

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests