Spring side:
DataSourceUtils->getConnection(dataSource)->
TransactionSynchronizationManager.getResource(dataSource)
SpringManagedTransaction->getConnection()->this.connection = DataSourceUtils.getConnection(this.dataSource);
SqlSessionFactoryBean:
buildSqlSessionFactory():
this.transactionFactory = new SpringManagedTransactionFactory();--> newTransaction(dataSource,..., ...)
Environment environment = new Environment(this.environment, this.transactionFactory, this.dataSource);
configuration.setEnvironment(environment);
Configuration:
configuration.defaultExecutorType = ExecutorType.SIMPLE;
newExecutor(Transaction transaction, ExecutorType executorType);
DefaultSqlSessionFactory:
openSessionFromDataSource/openSessionFromConnection--return SqlSession-->
[
final Environment environment = configuration.getEnvironment();
final TransactionFactory transactionFactory = getTransactionFactoryFromEnvironment(environment);
tx = transactionFactory.newTransaction(environment.getDataSource(), level, autoCommit);
final Executor executor = configuration.newExecutor(tx, execType);
return new DefaultSqlSession(configuration, executor, autoCommit);
]
SqlSessionTemplate:
Thread safe, Spring managed, -->Proxy-->
SqlSessionHolder holder = (SqlSessionHolder) TransactionSynchronizationManager.getResource(sessionFactory);
holder-->DefaultSqlSession:Executor:SIMPLE/BATCH->1:1
SqlSessionUtils.getSqlSession--> SqlSessionHolder[ResourceHolderSupport].requested++,released--,
if no holder, TransactionSynchronizationManager.registerSynchronization ->
SqlSessionSynchronization[TransactionSynchronization.beforeCommit--> SqlSession.commit-->executor.commit[...flushStatements...]
TransactionSynchronization.beforeCompletion if referenceCount<=0 TransactionSynchronizationManager.unbindResource(sessionFactory)]
BATCH: flushStatements before doSelect
mapper->select/insert/update/delete flushCache
Mybatis不允许在同一个事务并且是同一线程中并存2种执行模式。同一事务不同线程可以2种执行模式并存。
相关推荐
赠送jar包:mybatis-spring-2.0.0.jar; 赠送原API文档:mybatis-spring-2.0.0-javadoc.jar; 赠送源代码:mybatis-spring-2.0.0-sources.jar; 赠送Maven依赖信息文件:mybatis-spring-2.0.0.pom; 包含翻译后的API...
赠送jar包:mybatis-spring-boot-autoconfigure-1.3.2.jar; 赠送原API文档:mybatis-spring-boot-autoconfigure-1.3.2-javadoc.jar; 赠送源代码:mybatis-spring-boot-autoconfigure-1.3.2-sources.jar; 赠送...
赠送jar包:mybatis-spring-1.3.1.jar 赠送原API文档:mybatis-spring-1.3.1-javadoc.jar 赠送源代码:mybatis-spring-1.3.1-sources.jar 包含翻译后的API文档:mybatis-spring-1.3.1-javadoc-API文档-中文(简体)...
开发工具 mybatis-spring-1.3.1开发工具 mybatis-spring-1.3.1开发工具 mybatis-spring-1.3.1开发工具 mybatis-spring-1.3.1开发工具 mybatis-spring-1.3.1开发工具 mybatis-spring-1.3.1开发工具 mybatis-spring-...
开发工具 框架JAR mybatis-spring-1.3.1开发工具 框架JAR mybatis-spring-1.3.1开发工具 框架JAR mybatis-spring-1.3.1开发工具 框架JAR mybatis-spring-1.3.1开发工具 框架JAR mybatis-spring-1.3.1开发工具 框架...
赠送jar包:mybatis-spring-1.3.2.jar; 赠送原API文档:mybatis-spring-1.3.2-javadoc.jar; 赠送源代码:mybatis-spring-1.3.2-sources.jar; 赠送Maven依赖信息文件:mybatis-spring-1.3.2.pom; 包含翻译后的API...
赠送jar包:mybatis-spring-boot-autoconfigure-2.1.1.jar; 赠送原API文档:mybatis-spring-boot-autoconfigure-2.1.1-javadoc.jar; 赠送源代码:mybatis-spring-boot-autoconfigure-2.1.1-sources.jar; 赠送...
赠送jar包:mybatis-spring-2.0.5.jar; 赠送原API文档:mybatis-spring-2.0.5-javadoc.jar; 赠送源代码:mybatis-spring-2.0.5-sources.jar; 赠送Maven依赖信息文件:mybatis-spring-2.0.5.pom; 包含翻译后的API...
赠送jar包:mybatis-spring-boot-autoconfigure-2.1.3.jar; 赠送原API文档:mybatis-spring-boot-autoconfigure-2.1.3-javadoc.jar; 赠送源代码:mybatis-spring-boot-autoconfigure-2.1.3-sources.jar; 赠送...
赠送jar包:mybatis-spring-2.0.6.jar; 赠送原API文档:mybatis-spring-2.0.6-javadoc.jar; 赠送源代码:mybatis-spring-2.0.6-sources.jar; 赠送Maven依赖信息文件:mybatis-spring-2.0.6.pom; 包含翻译后的API...
赠送jar包:mybatis-spring-boot-autoconfigure-2.1.1.jar; 赠送原API文档:mybatis-spring-boot-autoconfigure-2.1.1-javadoc.jar; 赠送源代码:mybatis-spring-boot-autoconfigure-2.1.1-sources.jar; 赠送...
mybatis-spring-boot-starter-2.1.3.jarmybatis-spring-boot-starter-2.1.3.jarmybatis-spring-boot-starter-2.1.3.jar
MyBatis-Spring连接类。MyBatis-Spring 会帮助你将 MyBatis 代码无缝地整合到 Spring 中。 使用这个类库中的类, Spring 将会加载必要的 MyBatis 工厂类和 session 类。 这个类库也提供一个简单的方式来注入 MyBatis ...
赠送jar包:mybatis-spring-boot-autoconfigure-1.3.2.jar; 赠送原API文档:mybatis-spring-boot-autoconfigure-1.3.2-javadoc.jar; 赠送源代码:mybatis-spring-boot-autoconfigure-1.3.2-sources.jar; 赠送...
赠送jar包:mybatis-spring-2.0.3.jar; 赠送原API文档:mybatis-spring-2.0.3-javadoc.jar; 赠送源代码:mybatis-spring-2.0.3-sources.jar; 赠送Maven依赖信息文件:mybatis-spring-2.0.3.pom; 包含翻译后的API...
赠送jar包:mybatis-spring-1.3.0.jar; 赠送原API文档:mybatis-spring-1.3.0-javadoc.jar; 赠送源代码:mybatis-spring-1.3.0-sources.jar; 赠送Maven依赖信息文件:mybatis-spring-1.3.0.pom; 包含翻译后的API...
mybatis-spring-boot-starter-2.1.4.jarmybatis-spring-boot-starter-2.1.4.jar
赠送jar包:mybatis-spring-1.3.1.jar; 赠送原API文档:mybatis-spring-1.3.1-javadoc.jar; 赠送源代码:mybatis-spring-1.3.1-sources.jar; 包含翻译后的API文档:mybatis-spring-1.3.1-javadoc-API文档-中文...
mybatis-spring-1.3.1.jar 包,mybatis和spring整合用,可以和 mybatis-3.4.4 等配合使用
mybatis-spring-boot-autoconfigure-2.1.3mybatis-spring-boot-autoconfigure-2.1.3