MyBatis-Spring

org.apache.ibatis.ognl.MethodFailedException: Method "size" failed for object

僤鯓⒐⒋嵵緔 提交于 2019-11-27 08:56:26
1 问题描述 mybatis3.2.x版本,做压力测试,并发200用户,出现了如下异常. org.apache.ibatis.builder.BuilderException: Error evaluating expression 'size() > 0'. Cause: org.apache.ibatis.ognl.MethodFailedException: Method "size" failed for object [one, two] [java.lang.IllegalAccessException: Class org.apache.ibatis.ognl.OgnlRuntime can not access a member of class java.util.Collections$UnmodifiableCollection with modifiers "public"] at org.apache.ibatis.scripting.xmltags.OgnlCache.getValue(OgnlCache.java:47) at org.apache.ibatis.scripting.xmltags.ExpressionEvaluator.evaluateBoolean(ExpressionEvaluator.java:29) at

mybatis-spring事务处理机制分析

心不动则不痛 提交于 2019-11-27 05:50:06
Spring官方并没有提供对MyBatis的集成方案,于是MyBatis项目组自己写了一个项目 mybatis-spring 专门用于在spring中使用MyBatis。 mybatis-spring的实现很大程度上依赖spring jdbc的事务管理,所以我们先看一下在spring中直接使用jdbc访问数据库时是如何处理事务的。无论你是使用@Transactional注解这样的AOP配置方式,还是TransactionTemplate这样的编码方式,最终执行的操作事务的代码都会是类似下面这样 DefaultTransactionDefinition def = new DefaultTransactionDefinition(); PlatformTransactionManager txManager = new DataSourceTransactionManager(dataSource); TransactionStatus status = txManager.getTransaction(def); try { //get jdbc connection... //execute sql... txManager.commit(status); } catch (Exception e) { txManager.rollback(status); throw e; }

Mybatis-Spring源码分析

好久不见. 提交于 2019-11-25 22:51:37
分析Mybatis如何利用Spring的扩展点集成到框架中的,Mybatis本身的扩展点不再本次分析范畴 构建环境 上Github上下载 https://github.com/mybatis/spring 。通过Git的方式试了几次没成功,后来直接Down的zip包,再导入的Idea中的。 导入的过程当中会有点慢,要下载不少东西。记得一定要修改Maven的配置文件和本地仓库地址,否则可能之前你已经下过的相关包会又下载到C盘的本地仓库当中 测试代码 直接在源码目录下新建了一个目录来写测试代码 测试类 @Configuration @MapperScan("com.jv.mapper") @ComponentScan("com.jv.scan") public class TestMybatis { public static void main(String[] args) { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(TestMybatis.class); UserService bean = ac.getBean(UserService.class); System.out.println(bean.query()); } @Bean public