第二天:

  • 执行过程(工作原理)
  • 功能架构
  • 底层实现

执行过程

第一步:

 InputStream is = Resources.class.getResourceAsStream("/mybatis.xml");

     加载mybatis.xml核心配置文件,得到一个流对象 is ..

第二步: 

            SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);

       先创建sqlSessionFactoryBuider这个构建者对象,在调用build方法,传入is这个流对象。

在这个过程中,首先,MyBatis会先去创建一个XMLConfigBuilder解析器对象,解析我们刚才传进来的那个流对象,

解析完成之后,返回一个configuration对象,这个对象里面封装了解析之后我们配置的信息,正好这个configuration对象,就是我们这个方法创建SqlSessionFactory类型对象需要的参数。

返回的就是一个实现了SqlSessionFactory接口的DefaultSqlSessionFactory对象

第三步:

有了这个SqlSesionFactory实现类的对象之后,我们调用openSession()的方法。

这个过程中

需 要 通 过TransactionFactory 生成 Transaction 对象, 并且, 还需要创建核心执行器 Executor 对象,基于这些条件,

最终创建了实现SqlSession接口的DefaultSqlSession对象

第四步:

之后, 通过 SqlSession 对象执行相应的操作, 如果执行成功, 调用 commit 方法提交事务; 如果失败, 调用rollback 方法事务回滚. 最后, 调用 close 方法关闭session 资源.

以上, 就是 大概的MyBatis 的运行原理

------------------------------------------------------------------------------------------------------------

MyBatis运行过程中涉及到的类和接口:

1.1.1 Resources(C) 类

用于加载MyBatis核心配置文件

1.1.2 XMLConfigBuilder(C) 类

用于解析xml文件(核心配置文件)

1.1.3 Configuration(C)类

用于存放xml文件解析后的结果

1.1.4 DefaultSqlSessionFactory(C)类

是SqlSessionFactory(I)的实现类,创建时需要使用Configruation对象作为参数

1.1.5 SqlSession(I)接口

是MyBatis操作的核心

1.1.6 DefaultSqlSession(C)类

是SqlSession接口的实现类

1.1.7 TransactionFactory(I)接口

用于生产Trasaction对象(关于事务的)

1.1.8 Transaction(I) 接口

用于表示操作数据库的事务对象

1.1.9 Executor(I)接口

是MyBatis的核心执行器,类似于JDBC中的Statement,常用的实现类是SimpleExecutor

------------------------------------------------------------------------------------------------------------

功能架构

  

我们把Mybatis的功能架构分为三层:

  • API接口层:提供给外部使用的接口API,开发人员通过这些本地API来操纵数据库。接口层一接收到调用请求就会调用数据处理层来完成具体的数据处理。
  • 数据处理层:负责具体的SQL查找、SQL解析、SQL执行和执行结果映射处理等。它主要的目的是根据调用的请求完成一次数据库操作。
  • 基础支撑层:负责最基础的功能支撑,包括连接管理、事务管理、配置加载和缓存处理,这些都是共用的东西,将他们抽取出来作为最基础的组件。为上层的数据处理层提供最基础的支撑。

------------------------------------------------------------------------------------------------------------

底层实现

转载:https://www.cnblogs.com/my376908915/p/6812666.html

底层是对jdbc的封装和处理,映射等等,内容太多,想要深入学习可以读mybatis的源码,找相关资料。

mybatis学习(二)相关推荐

  1. MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作

    上一篇博文MyBatis学习总结(一)--MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对u ...

  2. Mybatis学习总结二

    Mybatis学习总结二 0.不需要修改的文件(在src下面) jdbc.properties文件 log4j.properties文件 SqlMapConfig.xml文件 1.高级结果映射 1.1 ...

  3. (转)MyBatis框架的学习(二)——MyBatis架构与入门

    http://blog.csdn.net/yerenyuan_pku/article/details/71699515 MyBatis框架的架构 MyBatis框架的架构如下图:  下面作简要概述: ...

  4. 小白大学生学习MyBatis(二)

    小白大学生学习MyBatis(二) 1 . 接(一)解释测试代码 主要类的介绍 https://blog.csdn.net/hjs_75187712/article/details/118344894 ...

  5. [MyBatis学习笔记] 二、Mybatis基本操作及相关标签介绍

    [MyBatis学习笔记] 二.Mybatis基本操作及相关标签介绍 一.Mybatis简介 二.简单的CRUD操作 1.构建SqlSessionFactory (1)编辑mybatis-config ...

  6. Mybatis学习笔记(二)【框架基础搭建】

    Mybatis框架基础搭建 一.数据库搭建 二.创建一个maven工程 三.在pom.xml中导入依赖 四.创建一个mybatis的核心配置文件 配置连接数据库的字段值文件(如果使用方式一就不需要配置 ...

  7. MyBatis学习笔记(二)根据配置文件优化

    上一篇:MyBatis学习笔记(一)完整查询数据库流程+增删改查 mybatis_config.xml文件中可以包含以下部分 本文接下来的优化都是针对于mybatis_config.xml文件,并且每 ...

  8. Mybatis学习笔记(二) 之实现数据库的增删改查

    开发环境搭建 mybatis 的开发环境搭建,选择: eclipse j2ee 版本,mysql 5.1 ,jdk 1.7,mybatis3.2.0.jar包.这些软件工具均可以到各自的官方网站上下载 ...

  9. 【Mybatis】Mybatis学习由浅入深(二)

    前言   上篇介绍到了Mybatis的优缺点,这篇接下来介绍一下流程情况和配置信息. MyBatis简介 Mybatis工作流程 加载配置信息初始化 通过配置文件或注解将配置信息加载成Statemen ...

  10. 【转】MyBatis学习总结(四)——解决字段名与实体类属性名不相同的冲突

    [转]MyBatis学习总结(四)--解决字段名与实体类属性名不相同的冲突 在平时的开发中,我们表中的字段名和表对应实体类的属性名称不一定都是完全相同的,下面来演示一下这种情况下的如何解决字段名与实体 ...

最新文章

  1. /bin/sh^M:损坏的解释器: No such file or directory
  2. sklearn自学指南(part53)--高斯过程
  3. 做梦也想有一个这样的实验室
  4. c语言sort函数_C语言的那些经典程序 第八期
  5. Linux内核态下的文件操作
  6. 解析mysqlbinlog日志_关于mysql-binlog日志解析框架
  7. 0308·付费专栏销售排行榜
  8. Java实现登录验证码功能
  9. 开源API文档管理系统
  10. 八皇后算法python_八皇后问题遗传算法实现(python版)
  11. 视频信息和信号的特点
  12. 千万别惹程序员,39 个奇葩代码注释...
  13. mysql 不会丢失数据吗_讨论MySQL丢失数据的几种情况
  14. hdu4114.Disney's FastPass
  15. 如何在Windows 10 IoT Core中添加其他语言的支持,如中文
  16. arduino知识点梳理(二)——INPUT_PULLUP模式
  17. PCB多种特殊走线画法与技巧
  18. 哈工大2020数据结构期末
  19. 《深入浅出Spring》@PropertySource、@Value注解及动态刷新实现
  20. PwC 普华永道面试归来

热门文章

  1. 手写reduce方法
  2. 基于Multism的高频小信号谐振放大器仿真研究
  3. qt 分贝毫瓦 dBm 与 功率 W 相互转换
  4. 【转载】DDR2 DDR3 PCBlayout规则
  5. bootstrap-入门学习-流体容器与响应式布局容器
  6. Android positionViewHolder{4d61b3c position=2 id=-1, oldPos=-1, pLpos:-1 no parent}
  7. 软考软件设计师-软件工程基础知识
  8. unity3d工程Plugin文件夹笔记
  9. 【第3版emWin教程】第14章 emWin6.x的2D图形库之基本绘图
  10. 2019,我们被“黑”科技薅过的羊毛?