相关内容:
架构师系列内容:架构师学习笔记(持续更新)

Mybatis工作流程

首先在MyBatis 启动的时候我们要去解析配置文件,包括全局配置文件和映射器配置文件,这里面包含了我们怎么控制MyBatis 的行为,和我们要对数据库下达的指令,也就是我们的SQL 信息。我们会把它们解析成一个Configuration 对象。
接下来就是我们操作数据库的接口,它在应用程序和数据库中间,代表我们跟数据库之间的一次连接:这个就是SqlSession 对象。
我们要获得一个会话, 必须有一个会话工厂SqlSessionFactory 。SqlSessionFactory 里面又必须包含我们的所有的配置信息,所以我们会通过一个SqlSessionFactoryBuilder 来创建工厂类。
我们知道,MyBatis 是对JDBC 的封装,也就是意味着底层一定会出现JDBC 的一些核心对象,比如执行SQL 的Statement,结果集ResultSet。在Mybatis 里面,SqlSession 只是提供给应用的一个接口,还不是SQL 的真正的执行对象。,SqlSession 持有了一个Executor 对象,用来封装对数据库的操作,在执行器Executor 执行query 或者update 操作的时候我们创建一系列的对象,来处理参数、执行SQL、处理结果集,这里我们把它简化成一个对象:StatementHandler
这个就是MyBatis 主要的工作流程,如图:

MyBatis 的jar 包(基于3.5.1)结构

Mybatis架构图


接口层
首先接口层是我们打交道最多的。核心对象是SqlSession,它是上层应用和MyBatis打交道的桥梁,SqlSession 上定义了非常多的对数据库的操作方法。接口层在接收到调用请求的时候,会调用核心处理层的相应模块来完成具体的数据库操作。

核心处理层
接下来是核心处理层。既然叫核心处理层,也就是跟数据库操作相关的动作都是在这一层完成的。核心处理层主要做了这几件事:

  1. 把接口中传入的参数解析并且映射成JDBC 类型;
  2. 解析xml 文件中的SQL 语句,包括插入参数,和动态SQL 的生成;
  3. 执行SQL 语句;
  4. 处理结果集,并映射成Java 对象;

插件也属于核心层,这是由它的工作方式和拦截的对象决定的。

基础支持层
最后一个就是基础支持层。基础支持层主要是一些抽取出来的通用的功能(实现复用),用来支持核心处理层的功能。比如数据源、缓存、日志、xml 解析、反射、IO、事务等等这些功能。

Mybatis体系结构及工作流程相关推荐

  1. mybatis返回某一字段_8.mybatis的基本工作流程(2.0)※

    mybatis的基本工作流程 1.读取配置文件,配置文件包含数据库连接信息和Mapper映射文件或者Mapper包路径. 2.有了这些信息就能创建SqlSessionFactory,SqlSessio ...

  2. mybatis 调用存储过程_你真的该进来了解下MyBatis的SQL工作流程了

    前言 MyBatis可能很多人都一直在用,但是MyBatis的SQL执行流程可能并不是所有人都清楚了,那么既然进来了,通读本文你将收获如下: 1.Mapper接口和映射文件是如何进行绑定的 2.MyB ...

  3. mybatis 原理_Mybatis工作流程及其原理与解析

    Mybatis简介: MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis ...

  4. MyBatis 的工作流程分析

    我们学习了MyBatis 的编程式使用的方法,我们再来回顾一下MyBatis 的主要工作流程: 首先在MyBatis 启动的时候我们要去解析配置文件,包括全局配置文件和映射器配置文件,这里面包含了我们 ...

  5. Mybatis工作流程,附带mybatis的mapper文件和config配置文件模板。mapper文件和dao接口的关系——xml中的namespace和sql标签id命名要求。

    1. Mybatis工作流程 1.1 使用MySQL创建数据库girls并生成一个表boys,如下图. 1.2 创建该表对应的简单实体类Boys,如下图. 1.3 创建Dao接口以及和接口同名的map ...

  6. MyBatis的几个重要概念和工作流程

    MyBatis 几个重要的概念 Mapper 配置: Mapper 配置可以使用基于 XML 的 Mapper 配置文件来实现,也可以使用基于 Java 注解的 MyBatis 注解来实现,甚至可以直 ...

  7. mybatis+springMVC+spring原理及工作流程

    做自己没做过的事情叫做成长 做自己不愿做的事情叫做改变 做自己不敢做的事情叫做突破 共勉 引言 本人在学习ssm中,已经能熟练的编写配置文件与代码了.但于前几天朋友问其原理与工作流程时却只能答出一二, ...

  8. 浅析Struts 体系结构与工作原理(图)

       Struts 体系结构是目前基于java的 web系统设计中广泛使用的mvc构架. 基本概念 Struts是Apache 基金会Jakarta 项目组的一个Open Source 项目,它采用模 ...

  9. Struts 体系结构与工作原理(图)

       Struts 体系结构是目前基于java的 web系统设计中广泛使用的mvc构架. 基本概念 Struts是Apache 基金会Jakarta 项目组的一个Open Source 项目,它采用模 ...

最新文章

  1. SQL-Hive中的Select From解析
  2. 安卓高手之路之 应用篇
  3. 微信对账单 java_微信支付对账,你是如何处理的?
  4. 【数据结构与算法】浅谈稀疏矩阵
  5. 离散中多重组合是指_数学系离散数学的几大核心领域
  6. poj 1190 生日蛋糕
  7. 分光计游标盘ab两个游标作用_汽车防撞梁的作用究竟有多大?没有后防撞梁的汽车真的不安全吗?...
  8. Android 7.0系统启动流程分析
  9. win10安装tensorflow-gpu
  10. MATLAB过期破解方法
  11. MAC协议微信自动生成带备注固定收款码免挂机监控协议回调
  12. linux rm 文件找回_Linux下用rm删除的文件的恢复方法
  13. 企业宣传片解说词的写法指导。
  14. Python 开发个人微信号在运维开发中的使用
  15. Spark学习笔记1
  16. 【高等数学】空间曲线积分、斯托克斯公式、参数方程
  17. 使用Python对Dicom文件进行读取与写入的实现(pydicom 和 SimpleITK)
  18. memcmp性能测试
  19. java使用阿里云短信平台
  20. Pointer being freed was not allocated

热门文章

  1. 百度seo排名规则_百度seo排名优化要点讲解(已帮助5184人)
  2. 面向 Android 软件开发套件(SDK)的 x86 Android* 系统映像许可协议
  3. 基于注解的Spring MVC与JPA如何解决实体的延时加载问题
  4. TabActivity,LocalActivityManager,TabHost,TabWidget深度分析(二)
  5. jsp或java中前后台传值乱码解决
  6. 《Linux命令行与shell脚本编程大全》读书笔记————第一章 初识Linux shell
  7. 软路由OpenWrt教程收集(插件开发教程,opkg安装软件教程)
  8. Vuejs --01 起步
  9. Windows Server 2003 系统安装
  10. iOS 10 不提示「是否允许应用访问数据」,导致应用无法使用的解决方案