Mybatis源码: Builder Mapper Executor
生活随笔
收集整理的這篇文章主要介紹了
Mybatis源码: Builder Mapper Executor
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
by yan 20220302
以下為Activiti 構造 initSqlSessionFactory時,完成Mybatis 的 DefaultSqlSessionFactory的過程。
時序圖
MyBatis解析xml配置文件
通過XMLConfigBuilder等一系列Builder類解析為Mapper對象模型
關鍵代碼
//Configuration.javapublic Executor newExecutor(Transaction transaction, ExecutorType executorType) {executorType = executorType == null ? defaultExecutorType : executorType;executorType = executorType == null ? ExecutorType.SIMPLE : executorType;Executor executor;if (ExecutorType.BATCH == executorType) {executor = new BatchExecutor(this, transaction);} else if (ExecutorType.REUSE == executorType) {executor = new ReuseExecutor(this, transaction);} else {executor = new SimpleExecutor(this, transaction);}if (cacheEnabled) {executor = new CachingExecutor(executor);}executor = (Executor) interceptorChain.pluginAll(executor);return executor;}//DefaultSqlSessionFactory.java //創建sqlSession: cfg->env->tx->excutor, cfg+excutor->sqlSessionprivate SqlSession openSessionFromDataSource(ExecutorType execType, TransactionIsolationLevel level, boolean autoCommit) {Transaction tx = null;try {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);} catch (Exception e) {closeTransaction(tx); // may have fetched a connection so lets call close()throw ExceptionFactory.wrapException("Error opening session. Cause: " + e, e);} finally {ErrorContext.instance().reset();}}//XMLConfigBuilder.parseConfigurationprivate void parseConfiguration(XNode root) {try {//issue #117 read properties firstpropertiesElement(root.evalNode("properties"));Properties settings = settingsAsProperties(root.evalNode("settings"));loadCustomVfs(settings);loadCustomLogImpl(settings);typeAliasesElement(root.evalNode("typeAliases"));pluginElement(root.evalNode("plugins"));objectFactoryElement(root.evalNode("objectFactory"));objectWrapperFactoryElement(root.evalNode("objectWrapperFactory"));reflectorFactoryElement(root.evalNode("reflectorFactory"));settingsElement(settings);// read it after objectFactory and objectWrapperFactory issue #631environmentsElement(root.evalNode("environments"));databaseIdProviderElement(root.evalNode("databaseIdProvider"));typeHandlerElement(root.evalNode("typeHandlers"));mapperElement(root.evalNode("mappers"));} catch (Exception e) {throw new BuilderException("Error parsing SQL Mapper Configuration. Cause: " + e, e);}}相關類圖
Mybatis xml mapper builder相關
Mybatis binding 相關
Mybatis mapping 相關
Mybatis Executor 相關
Mybatis cache相關
總結
以上是生活随笔為你收集整理的Mybatis源码: Builder Mapper Executor的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于机器学习的图像质量评价算法
- 下一篇: Mybatis源码:Cache 装饰器模