Mybatis3.4.0不支持mybatis-spring1.2.5及以下版本

转载 2017年01月02日 20:54:33


今天将工程的Mybatis的版本由3.3.0升级到3.4.0导致程序运行错误,使用的mybatis-spring版本是1.2.3,错误内容如下,最后发现是SpringManagedTransaction类中没有getTimeout函数,所以导致这个错误出现。

  1. java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManagedTransaction.getTimeout()Ljava/lang/Integer;  
  2.     at org.apache.ibatis.executor.BatchExecutor.doQuery(BatchExecutor.java:91)  
  3.     at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:325)  
  4.     at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156)  
  5.     at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109)  
  6.     at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:83)  
  7.     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  
  8.     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)  
  9.     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)  
  10.     at java.lang.reflect.Method.invoke(Method.java:497)  
  11.     at org.apache.ibatis.plugin.Invocation.proceed(Invocation.java:49)  
  12.     at com.tianjunwei.page.PageInterceptor.intercept(PageInterceptor.java:87)  
  13.     at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:61)  
  14.     at com.sun.proxy.$Proxy19.query(Unknown Source)  
  15.     at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:148)  
  16.     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  
  17.     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)  
  18.     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)  
  19.     at java.lang.reflect.Method.invoke(Method.java:497)  
  20.     at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:408)  
  21.     at com.sun.proxy.$Proxy16.selectList(Unknown Source)  

接下来我们分析以下mybatis由3.3.0到3.4.0升级所发生的变化,我们看到报错的地方是BatchExecutor的doQuery方法。

mybatis 3.3.0源码如下:



mybatis 3.4.0源码如下:


通过上图我们看到,mybatis3.4.0下StatementHandler的prepare方法添加了一个timeout参数,并且这个参数是通过transaction获得的,在spring和mybatis结合使用时,transaction应该是SpringManagedTransaction,接下来我们分析一下mybatis-spring的SpringManagedTransaction类的不同。

在mybatis-spring的1.2.3中没有getTimeout函数

在mybatis-spring的1.3.0版本中有getTimeout函数



现在看来mybatis的3.4.0及以上版本只支持mybatis-spring1.3.0及以上版本(现在最新是1.3.0),居然出现了不兼容情况,官方好像并不打算去兼容,我们开发人员需要自己去注意了。

ie8以下版本(包括ie8)的浏览器不支持html5标签属性解决方案(Modernizr 2.6.2插件的使用)

ie8以下版本(包括ie8)的浏览器不支持html5标签属性解决方案(Modernizr 2.6.2插件的使用)...
  • zyx13859002783
  • zyx13859002783
  • 2014年08月12日 09:30
  • 25523

Android 设置客户端支持的TLS支持的版本号

前:最近做基于XMPP协议的IM,服务端用的是OpenFire,客户端用的Smack包,需要进行TLS加密服务端设置为只支持TLS1.2,可是我开加密的时候客户端总是TLS1,不知为何,最终在stac...
  • muzhengjun
  • muzhengjun
  • 2016年08月09日 08:50
  • 3188

关于Android4.x系统支持TLS1.2的解决方案

为Http请求的网络客户端设置一个特殊的SSLSocketFactory。这个代理SSLSocketFactory在创建一个Socket连接的时候,会设置Socket的可用的TLS版本。private...
  • joye123
  • joye123
  • 2016年12月26日 18:17
  • 2440

无法升级数据库,因为此版本的SQLServer不支持该数据库的非发布版本(539)“解决方案

转载自点击打开链接 无法升级数据库....因为此版本的SQLServer不支持该数据库的非发布版本(539)“解决方案 2015-06-19      0 个评论    ...
  • daisyleedq
  • daisyleedq
  • 2016年05月18日 00:51
  • 1947

**tomcat服务器的SSL协议秘钥版本过低问题**

**tomcat服务器的SSL协议秘钥版本过低问题** 最近因为win10的补丁包推送导致公司的项目无法访问,以下为我的解决过程: 问题原因:公司项目只支持ie,且使用的htt...
  • xiaoyumi000
  • xiaoyumi000
  • 2016年08月19日 11:16
  • 1138

SQL2005附加数据库出错 数据库版本为 655,无法打开。此服务器支持 611 版及更低版本。不支持降级路径。

附加数据库 遇到如下问题: 数据库 'SqlPersistenceService' 的版本为 655,无法打开。此服务器支持 611 版及更低版本。不支持降级路径。 无法打开新数据库 'SqlPer...
  • zsb190623
  • zsb190623
  • 2013年05月29日 20:03
  • 4879

SQL server 数据库的版本为661,不支持降级路径

在我们使用别人导出的数据库的时候,有时候我们会通过附加数据库的方法,把别人导出的数据库附加到我们的电脑中,这时,或许你会遇到这种问题,附加时,提示版本为XXX,无法打开,支持AAA版本。      ...
  • qian_guan
  • qian_guan
  • 2018年01月03日 14:58
  • 46

“无法升级数据库....因为此版本的 SQL Server 不支持该数据库的非发布版本(539) “解决方案

“无法升级数据库....因为此版本的 SQL Server 不支持该数据库的非发布版本(539) “解决方案...
  • yangyisen0713
  • yangyisen0713
  • 2015年06月18日 13:01
  • 9593

“无法升级数据库....因为此版本的 SQL Server 不支持该数据库的非发布版本(539) “解决方案

“无法升级数据库....因为此版本的 SQL Server 不支持该数据库的非发布版本(539) “解决方案...
  • jhope
  • jhope
  • 2017年04月04日 06:02
  • 1485

通俗易懂,手把手教会你android 6.0后(兼容6.0之前版本)申请危险权限的方法

android6.0发布后,应用内部申请权限的方法不再是统一的在AndroidManiFest.xml文件中配置,具体原因请看...
  • u011150924
  • u011150924
  • 2016年12月16日 14:05
  • 2242
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Mybatis3.4.0不支持mybatis-spring1.2.5及以下版本
举报原因:
原因补充:

(最多只允许输入30个字)