Mybatis3.4.0不支持mybatis-spring1.2.5及以下版本
来源:互联网 发布:王陆807使用方法知乎 编辑:程序博客网 时间:2024/06/06 06:39
今天将工程的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
- 记录下这一时刻
- 欢迎使用CSDN-markdown编辑器
- 玩转安卓 Android系统文件夹结构解析(绝对有用)
- 重定向和转发的区别比较
- spring事务
- Mybatis3.4.0不支持mybatis-spring1.2.5及以下版本
- 17 - 01 - 22 计算机网络(12)(国际控制消息(报文)协议)
- obs+nginx搭建流媒体
- 归并排序
- 软导涉及英文缩写
- java.lang.NoClassDefFoundError: org/apache/ibatis/cursor/Cursor
- 持续集成环境选择:Jenkins VS gitlab-ci
- 王学岗单例模式的优化————双重检查、枚举、内部类、容器管理
- hi