1. mybatis 是使用JDBC来实现的, 所以需要我们首先了解JDBC 的查询

  ①加载JDBC驱动

  ②建立并获取数据库连接

  ③设置sql语句的传递参数

  ④执行sql语句并获得结果

  ⑤对结果进行转化,并返回处理后的结果

  ⑥释放相关的资源 

  2.mybatis 核心组件

  ①sqlSession  和数据库交互的回话,完成必要的增删改查

  ②Excutor  负责SQL语句的生成,和查询缓存的维护

  ③StatementHandler 封装了jdbc的statement操作,设置参数结果转化

  ④ParameterHandler 转化成 jdbc所需要的参数

  ⑤ResultSetHandler 对jdbc返回的结果进行转化

  ⑥TypeHandler java数据类型和jdbc数据类型的转化

  ⑦ MappedStatement 对节点的封装

  ⑧SqlSource 将SQL封装到Boundsql 中

  ⑨BoundSql 动态生成的sql 以及相关参数的信息

  ⑩Configuration 配置信息的维护

  3. 使用sqlsession 的工作流程

  1. List<Employee> result = sqlSession.selectList("com.louis.mybatis.dao.EmployeesMapper.selectByMinSalary",params);

  ①Configuration 匹配想对象的 MappedStatement

  ②将查询任务委托给 Excutor

  ③根据SQL和参数,动态生成   BoundSql  对象

  ④为当前的查询构建一个缓存key

  ⑤查询的时候,先从缓存中获取,如果没有的话,直接从数据库中读取
  ⑥执行查询结果,返回list结果,将结果放入到缓存中

  ⑦

mybatis 原理研究的更多相关文章

  1. AX中四种库存ABC分析法原理研究

    库存ABC分类,简单的说就是抓大放小,是为了让我们抓住重点,用最大精力来管理最重要的物料,而对于不太重要的物料则可以用较少的精力进行管理.它和我们平常说的八二法则有异曲同工之妙. 既然要应用库存ABC ...

  2. SpringMVC关于json、xml自动转换的原理研究[附带源码分析 --转

    SpringMVC关于json.xml自动转换的原理研究[附带源码分析] 原文地址:http://www.cnblogs.com/fangjian0423/p/springMVC-xml-json-c ...

  3. 《深入理解mybatis原理》 MyBatis事务管理机制

    MyBatis作为Java语言的数据库框架,对数据库的事务管理是其很重要的一个方面.本文将讲述MyBatis的事务管理的实现机制. 首先介绍MyBatis的事务Transaction的接口设计以及其不 ...

  4. 《深入理解mybatis原理》 Mybatis初始化机制具体解释

    对于不论什么框架而言.在使用前都要进行一系列的初始化,MyBatis也不例外. 本章将通过下面几点具体介绍MyBatis的初始化过程. 1.MyBatis的初始化做了什么 2. MyBatis基于XM ...

  5. 《深入理解mybatis原理》 MyBatis的架构设计以及实例分析

    作者博客:http://blog.csdn.net/u010349169/article/category/2309433 MyBatis是目前非常流行的ORM框架,它的功能很强大,然而其实现却比较简 ...

  6. 深入理解mybatis原理, Mybatis初始化SqlSessionFactory机制详解(转)

    文章转自http://blog.csdn.net/l454822901/article/details/51829785 对于任何框架而言,在使用前都要进行一系列的初始化,MyBatis也不例外.本章 ...

  7. 《深入理解mybatis原理7》 MyBatis的二级缓存的设计原理

    <深入理解mybatis原理> MyBatis的二级缓存的设计原理 MyBatis的二级缓存是Application级别的缓存,它可以提高对数据库查询的效率,以提高应用的性能.本文将全面分 ...

  8. 《深入理解mybatis原理6》 MyBatis的一级缓存实现详解 及使用注意事项

    <深入理解mybatis原理> MyBatis的一级缓存实现详解 及使用注意事项 0.写在前面   MyBatis是一个简单,小巧但功能非常强大的ORM开源框架,它的功能强大也体现在它的缓 ...

  9. 《深入理解mybatis原理4》 MyBatis缓存机制的设计与实现

    <深入理解mybatis原理> MyBatis缓存机制的设计与实现 本文主要讲解MyBatis非常棒的缓存机制的设计原理,给读者们介绍一下MyBatis的缓存机制的轮廓,然后会分别针对缓存 ...

随机推荐

  1. 《剑指offer》面试题1:为类CMyString添加赋值运算符函数——C++拷贝构造函数与赋值函数

    题中已给出CMyString的类定义,要求写赋值运算符函数. #include<iostream> #include<cstring> using namespace std; ...

  2. 洛谷 - P3966 - 单词 - AC自动机

    https://www.luogu.org/problemnew/show/P3966 因为文本串就是字典本身,所以这个和平时的AC自动机不太一样.平时的query要沿着fail树把子树的出现次数依次 ...

  3. 手把手教你使用ueditor

    ueditor的强大功能就不再一一叙述了,我们的目的就是通过使用php与html实现下面的效果 话不多说,上干货 前言:文件都是基于tp5的 1.引入富文本编辑器 将 ueditor 下的文件引入 1 ...

  4. Qt测试代码执行时间

    ////////////////////////////////////////////////////////////////// QString _GetIntervalTime(QTime&am ...

  5. opencv学习资料

    搜集一些基础书 数字图像处理 信号与系统 计算机视觉中的多视图几何 图像处理.分析与机器视觉 基于序列图像的视觉检测理论与方法 官网(各版本api) http://opencv.org/ opencv ...

  6. [Xcode 实际操作]九、实用进阶-(14)使用富文本CoreText框架创建丰富多彩的文本

    目录:[Swift]Xcode实际操作 本文将演示如何使用富文本CoreText框架创建丰富多彩的文本图形. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] imp ...

  7. 第一次运行PHP项目(phpstorm+wampserver)

    1.配置环境 1)vcredist_x64,wampserver2.5-Apache-2.4.9-Mysql-5.6.17-php5.5.12-64b,如下图 (1)安装vcredist_x64   ...

  8. 返回零长度的数组或集合,而不是null

    返回零长度的数组或集合,而不是null   像下面的方法并不少见: private final List<Cheese> cheesesInStock = ...; /** * @retu ...

  9. 【UVA - 10815】Andy's First Dictionary (set)

    Andy's First Dictionary Description 不提英文了 直接上中文大意吧 XY学长刚刚立下了再不过CET就直播xx的flag,为了不真的开启直播模式,XY学长决定好好学习英 ...

  10. 【IDEA】关于 IDEA 中新建 web 项目的 webapp 文件夹没有小蓝点 ,启动服务,访问不到解决方案

    问题描述: 新建的 maven 的 Module 项目,webapp 文件夹也是在创建完项目后手动添加的,出现了 webapp 文件夹不能被识别的情况. 解决方案: 第一步:  选中项目按 F4 键, ...