作者:W&L

推荐: 陶邦仁的博客

 

(1)加载配置并初始化

      触发条件:加载配置文件

配置来源于两个地方,一处是配置文件,一处是Java代码的注解,将SQL的配置信息加载成为一个个MappedStatement对象(包括了传入参数映射配置、执行的SQL语句、结果映射配置),存储在内存中。

(2)接收调用请求

      触发条件:调用Mybatis提供的API

      传入参数:为SQL的ID和传入参数对象

处理过程:将请求传递给下层的请求处理层进行处理。 

(3)处理操作请求

触发条件:API接口层传递请求过来

传入参数:为SQL的ID和传入参数对象

处理过程:

(A)根据SQL的ID查找对应的MappedStatement对象。

(B)根据传入参数对象解析MappedStatement对象,得到最终要执行的SQL和执行传入参数。

(C)获取数据库连接,根据得到的最终SQL语句和执行传入参数到数据库执行,并得到执行结果。

(D)根据MappedStatement对象中的结果映射配置对得到的执行结果进行转换处理,并得到最终的处理结果。

(E)释放连接资源。       

(4)返回处理结果

将最终的处理结果返回。

1.1   分析结论

1、  mybatis配置文件,包括Mybatis全局配置文件和Mybatis映射文件,其中全局配置文件配置了数据源、事务等信息;映射文件配置了SQL执行相关的信息。

2、  mybatis通过读取配置文件信息(全局配置文件和映射文件),构造出SqlSessionFactory即会话工厂。

3、  通过SqlSessionFactory,可以创建SqlSession即会话。Mybatis是通过SqlSession来操作数据库的。

4、  SqlSession本身不能直接操作数据库,它是通过底层的Executor执行器接口来操作数据库的。Executor接口有两个实现类,一个是普通执行器,一个是缓存执行器(默认)

5、  Executor执行器要处理的SQL信息是封装到一个底层对象MappedStatement中。该对象包括:SQL语句、输入参数映射信息、输出结果集映射信息。其中输入参数和输出结果的映射类型包括java的简单类型、HashMap集合对象、POJO对象类型。

1.1   分析结论

1、  mybatis配置文件,包括Mybatis全局配置文件和Mybatis映射文件,其中全局配置文件配置了数据源、事务等信息;映射文件配置了SQL执行相关的信息。

2、  mybatis通过读取配置文件信息(全局配置文件和映射文件),构造出SqlSessionFactory即会话工厂。

3、  通过SqlSessionFactory,可以创建SqlSession即会话。Mybatis是通过SqlSession来操作数据库的。

4、  SqlSession本身不能直接操作数据库,它是通过底层的Executor执行器接口来操作数据库的。Executor接口有两个实现类,一个是普通执行器,一个是缓存执行器(默认)

5、  Executor执行器要处理的SQL信息是封装到一个底层对象MappedStatement中。该对象包括:SQL语句、输入参数映射信息、输出结果集映射信息。其中输入参数和输出结果的映射类型包括java的简单类型、HashMap集合对象、POJO对象类型。

转载于:https://www.cnblogs.com/lxl57610/p/7436763.html

MyBatis执行原理图相关推荐

  1. mybatis 执行插入操作,insert 返回1,数据库中无数据。数据库中数据的创建时间和插入执行时间不一致。

    大家好,我是烤鸭: 今天记录一下线上的问题,由于不是我们组的代码,所以没参与全程,只是最后有幸听各位大佬探讨解决方案.mybatis 执行插入操作,insert返回1,日志记录和接口返回都正常,但是数 ...

  2. Mybatis执行流程分析_自定义简易Mybatis框架

    自定义简易Mybatis框架 Mybatis执行流程分析 Mybatis代码编写流程: Mybatis配置文件加载过程: 需求分析及技术概述 根据上述的功能结构图, 得出如下需求: 1. 需要具有配置 ...

  3. mybatis执行的核心步骤

    本文来说下mybatis执行的核心步骤 文章目录 概述 概述 mybatis执行的核心步骤 读取 mybatis 的 mybatis-config.xml 配置文件 加载映射文件 构建 SQLSess ...

  4. Mybatis执行流程、缓存原理以及相关面试题

    一.Mybatis执行流程 具体分析Mybatis是如何操作数据库的! . 1.定义我们的核心配置文件的路径,这个路径是从target/classes下开始找的! String config = &q ...

  5. mybatis执行流程

    目录 一.mybatis执行流程 二.Mybatis层次结构 三.Mybatis组件介绍 一.mybatis执行流程 1. 加载配置文件并初始化(SqlSession) 配置文件来源于两个地方,一个是 ...

  6. Java-Mybatis(二): Mybatis配置解析、resultMap结果集映射、日志、分页、注解开发、Mybatis执行流程分析

    Java-Mybatis-02 学习视频:B站 狂神说Java – https://www.bilibili.com/video/BV1NE411Q7Nx 学习资料:mybatis 参考文档 – ht ...

  7. mybatis执行sql语句

    项目场景: 使用注解的方式,直接执行sql语句 源码: TestMyBatisController package com.test.controller;import java.util.Map; ...

  8. Mybatis执行update,insert等语句返回的不是受影响的行数

    Mybatis执行update,insert等语句返回的不是受影响的行数 在我们日常开发中,使用Mybatis框架中,经常会根据update,或者其他操作的返回值判断执行是否成功. 如: 在执行以上语 ...

  9. MyBatis执行sql的整个流程

    MyBatis执行sql的整个流程 大致过程:启动->解析配置文件->创建executor->绑定参数->执行sql->结果集映射 扫描配置 @MapperScan,配置 ...

  10. 使用mybatis执行oracle存储过程

    存储过程在小公司用的不多,但是如果业务比较复杂或者性能要求比较苛刻的时候存储过程就派上用场了,ibatis的前期的一些版本貌似不支持存储过程因此我选择了mybatis来做实验. 1.无输入和输出参数的 ...

最新文章

  1. 每日一皮:强大的sudo ...
  2. MySQL存储引擎中的MyISAM和InnoDB区别详解
  3. 全球30篇最热门的计算机视觉和深度学习论文
  4. 常见的安全应用识别技术有哪些?
  5. 常用的 Emmet 语法
  6. centos7.x redhat7.x 升级openssh8.7
  7. error while loading shared libraries: libiconv.so.2: cannot open shared object file
  8. 天津商业大学C语言题库,天津商业大学c语言机考改错及解答(含答案)解析.doc
  9. flutter html 加载_实操 | 在 Flutter 中创建通信桥
  10. bio linux 创建_Linux 五种IO模型
  11. 资料分析-特殊增长率,综合分析
  12. spring boot 2.1.4 hibernate 二级缓存 Caffeine实现
  13. Cypress使用教程
  14. 【附源码】计算机毕业设计java信用卡增值业务系统设计与实现
  15. MySQL实战系列3:视图、存储过程、函数、索引全解析
  16. unapp Error: Unbalanced delimiter found in string
  17. [运算放大器]佛朗哥笔记 - 电阻性反馈电路 - 电流泵与电流放大器
  18. Java 如何把gb2312编码转化为汉字(互转)
  19. dad my_经典绘本| My Dad
  20. 渣土车识别检测系统-yolov5

热门文章

  1. 【渝粤教育】国家开放大学2018年春季 0050-22T民族理论与民族政策 参考试题
  2. pku2503 Babelfish(use bsearch)
  3. PyTorch并行与分布式(三)DataParallel原理、源码解析、举例实战
  4. 求解偏微分方程开源有限元软件deal.II学习--Step 13
  5. 修改初始Manager QuerySets,重写Manager.get_query_set()函数之后,发现并没有按照我们指定的方法执行。...
  6. width:100%以什么为基准的测试
  7. vue个人学习(三)----组件
  8. [转]installshield for VC++6 如何使用
  9. mysql 归档方案(一次性)
  10. Hessian学习(springboot环境)