mybatis运行原理
mybatis运行原理
运行过程中涉及到的类或者接口
- Resources(c) :用于加载mybatis核心配置文件
- XMLConfigBuilder(c) :用于解析xml文件(核心配置文件)
- Configuration(c):用于存放xml文件解析后的结果
- DefaultSqlSessionFactory(c):是SqlSessionFactory(I)的实现类,创建时需要使用Configuration对象。
- SqlSession(I):是mybatis操作的核心
- DefaultSqlSession(C):是SqlSession接口的实现类。
- TransactionFactory(I):用于生产Transaction对象
- Transaction(I):用于表示操作数据库的事务对象
- Executor(I):是MyBatis的核心执行器,类似于jdbc中的Statement,常用的实现类是SimpleExecutor.
文字描述
当mybatis运行开始时,先要通过Resources加载核心配置文件,之后使用XMLConfigBuilder对配置文件进行解析,将解析结果封装为Configuration对象,接着,使用Configuration构建一个DefaultSqlSessionFactory对象,至此,SqlSession工厂构建完成。接下来,通过工厂对象调用openSession方法创建SqlSession对象。在这个过程中,需要通过TransactionFactory对象,并且,还需要创建核心执行器Executor对象,之后通过这些对象来创建DefaultSqlSession对象,至此,SqlSession对象创建成功。
之后,通过SqlSession对象来执行响应的 操作,如果执行成功,调用commit方法来提交事务;如果失败,调用rollback方法事务回滚。最后,调用close方法关闭session资源。以上,就是MyBatis的运行原理。
mybatis运行原理的更多相关文章
- 居然还有人这样解说mybatis运行原理
目录 Mybatis基本认识 动态代理 JDK实现 CGLIB动态代理 总结 反射 Configuration对象作用 映射器结构 sqlsession执行流程(源码跟踪) Executor Stat ...
- JDBC介绍和Mybatis运行原理及事务处理
本博客内容非自创,转载自以下三位,侵删: https://juejin.im/post/5ab7bd11f265da23906bfbc5 https://my.oschina.net/fifadxj/ ...
- mybatis运行原理学习
一.分步骤分析 1.根据配置文件创建SqlSessionFactory: 解析文件的每一个信息保存在Configuration中,返回包含Configuration的DefaultSqlSession ...
- Mybatis的SqlSession运行原理
前言 SqlSession是Mybatis最重要的构建之一,可以简单的认为Mybatis一系列的配置目的是生成类似 JDBC生成的Connection对象的SqlSession对象,这样才能与数据库开 ...
- 互联网轻量级框架SSM-查缺补漏第七天(MyBatis的解析和运行原理)
第七章MyBatis的解析和运行原理 SqlSessionFactory是MyBatis的核心类之一,其最重要的功能就是提供创建MyBatis的核心借口SqlSession,所以要先创建SqlSess ...
- Mybatis的解析和运行原理
Mybatis的解析和运行原理 Mybatis的运行过程大致分为两大步:第一步,读取配置文件缓存到Configuration对象,用以创建 SqlSessionFactory:第二步,SqlSessi ...
- Mybatis插件原理分析(二)
在上一篇中Mybatis插件原理分析(一)中我们主要介绍了一下Mybatis插件相关的几个类的源码,并对源码进行了一些解释,接下来我们通过一个简单的插件实现来对Mybatis插件的运行流程进行分析. ...
- 【转】MaBatis学习---源码分析MyBatis缓存原理
[原文]https://www.toutiao.com/i6594029178964673027/ 源码分析MyBatis缓存原理 1.简介 在 Web 应用中,缓存是必不可少的组件.通常我们都会用 ...
- 深入理解MyBatis的原理:整个体系
前言:工作中虽然用到了 MyBatis,可完全不知道为什么,再不学习就晚了,这里将记录我的学习笔记,整个 MyBatis 的体系. 一.简介 1.传统的JDBC JDBC 是一种典型的桥接模式. 使用 ...
随机推荐
- HTML5:基本语句
HTML5:超文本标记语言(HTML)第五次重大修改 我用的sulime编辑器,用Package contorl后安装emmet插件来编辑HTML代码,以下为sublime操作小技巧 ctrl+s 保 ...
- javascript中的数字玩法,颠覆你的眼睛
1.JavaScript中的数字中有一些很奇葩的现象. 在Chrome控制台中可以自己做一下实验: 1 === 1.0 ; //true 习惯了强类型语言,如java,c,OC看到这个结论还是有点小迷 ...
- linux 音频编程
http://blog.csdn.net/sea918/article/details/7249216 1.音频开发模型: OSS(open sound system) linux/unix 平 ...
- Chap4:区块链的应用技术[《区块链中文词典》维京&甲子]
- [knowledge][dpdk] open data plane
https://www.opendataplane.org/ https://en.wikipedia.org/wiki/OpenDataPlane odp vs dpdk: http://dpdk ...
- LeetCode 476 Number Complement 解题报告
题目要求 Given a positive integer, output its complement number. The complement strategy is to flip the ...
- 内置函数time
time import time.time() # 浮点型,给计算机看,随机 时间有三种: First: 时间戳 (time.time()) Second: 结构化时间 可以修改 Third: ...
- set的经典应用
set的经典应用 刚开始用map标记一个测试点超时了 ┭┮﹏┭┮: 用set的find 减少了循环提高了效率 #include <bits/stdc++.h>using namespace ...
- Ubuntu14.04 LTS 安装Chrome浏览器(转)
add zhj: 亲测过,可以,原来不用FQ就可以下载,有点意外 原文:http://www.jianshu.com/p/8220578d0b15 1.打开终端(ctrl + alt + t),下载6 ...
- JavaScript 学习笔记-HTML&&DOM
HTML DOM (文档对象模型) 当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model). HTML DOM 模型被构造为对象的树. JavaScript 能够 ...