Mybatis3.4.0不支持mybatis-spring1.2.5及以下版本
来源:互联网 发布:js 替换换行符 编辑:程序博客网 时间:2024/06/05 15:37
今天将工程的Mybatis的版本由3.3.0升级到3.4.0导致程序运行错误,使用的mybatis-spring版本是1.2.3,错误内容如下,最后发现是SpringManagedTransaction类中没有getTimeout函数,所以导致这个错误出现。
java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManagedTransaction.getTimeout()Ljava/lang/Integer;at org.apache.ibatis.executor.BatchExecutor.doQuery(BatchExecutor.java:91)at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:325)at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156)at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109)at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:83)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:497)at org.apache.ibatis.plugin.Invocation.proceed(Invocation.java:49)at com.tianjunwei.page.PageInterceptor.intercept(PageInterceptor.java:87)at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:61)at com.sun.proxy.$Proxy19.query(Unknown Source)at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:148)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:497)at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:408)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),居然出现了不兼容情况,官方好像并不打算去兼容,我们开发人员需要自己去注意了。
0 0
- Mybatis3.4.0不支持mybatis-spring1.2.5及以下版本
- Mybatis3.4.0不支持mybatis-spring1.2.5及以下版本
- Mybatis3.4.0不支持mybatis-spring1.2.5及以下版本
- jquery 解决ie9及以下版本不支持placeholder属性
- IOS5以下版本不支持position:fixed属性
- vue 为什么不支持 IE8 及其以下版本
- Safari5及以下版本不支持Date的横杠字符串格式
- Safari5及以下版本不支持Date的横杠字符串格式
- Safari5及以下版本不支持Date的横杠字符串格式
- Safari5及以下版本不支持Date的横杠字符串格式
- Safari5及以下版本不支持Date的横杠字符串格式
- IE8及以下版本不支持 javascript 的table标签的innerHTML 改用div标签
- Android 4.0及以下版本短信漏洞
- 关于IE8以及以下版本不支持媒体查询的解决方案
- Android4.4以下版本webview 不支持css3 flex布局
- ie8 及以下不支持 array.map 的解决方式
- IE8及以下不支持HTML5标签的处理
- Spring1
- 银行卡二三四元素实名认证
- 在亚马逊云服务器上部署阿里数据库Otter(二)
- Android文件管理器开发中对文件的复制,移动,删除,新建文件夹等的操作
- 仿泰捷视频最新 TV 版
- Linux下高并发socket最大连接数所受的各种限制
- Mybatis3.4.0不支持mybatis-spring1.2.5及以下版本
- 计算机网络(五)常见面试题
- c语言中的右移是逻辑右移还是算术右移的问题
- Java基础学习总结(68)——有关Java线程方面的面试题
- MongoDB学习笔记(查询)
- java异常处理机制
- 内存泄露查找方法总结
- 编码剖析Spring装配基本属性的原理
- 机器学习是深度学习之母