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),居然出现了不兼容情况,官方好像并不打算去兼容,我们开发人员需要自己去注意了。

相关文章推荐

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

今天将工程的Mybatis的版本由3.3.0升级到3.4.0导致程序运行错误,使用的mybatis-spring版本是1.2.3,错误内容如下,最后发现是SpringManagedTransactio...

mybatis-spring-1.2.5.zip

  • 2016-05-19 21:50
  • 243KB
  • 下载

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

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

mybatis-3.4.0---资源获取系列-ClassLoader操作

其实mybatis框架,或者是说spring框架,都是从读取配置文件开始的,之后是各种操作,这种编程方式的有点就是,我们下载别人的jar包框架之后,修改一下配置文件就可以使用了, 这也是编码从硬编码到...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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