SqlSession是一个会话,相当于JDBC中的一个Connection对象,是整个Mybatis运行的核心。SqlSession接口提供了查询,插入,更新,删除方法,Mybatis中所有的数据库交互都由SqlSession来完成,分析和理解SqlSession的运行原理是学习整个Mybatis的重点。

​ SqlSession接口有两个实现SqlSessionManager,DefaultSqlSession。

SqlSessionManager:对SqlSessionFactory 和SqlSession 接口的实现,主要功能是对SqlSessionFactory 和SqlSession的管理,是更高层次的封装
DefaultSqlSession:SqlSession的实现,Mybatis工作时真正调用的类,所有调用都是通过此类来实现。
DefaultSqlSession实现主要有4大组件来完成:Executor,StatementHandler,ParameterHandler,ResultHandler:

Executor(执行器):由他来调度StatementHandler,ParameterHandler,ResultHandler等来执行对应的SQL;
StatementHandler(数据库会话处理器 ):使用数据库的statement(PreparedStatement)来执行SQL;
ParameterHandler(参数处理器):用于对SQL语句中参数的处理;
ResultHandler(结果集处理器):进行最后结果集(ResultSet)的封装返回处理。

Executor
Executor接口主要有三个实现

SimpleExecutor:简单执行器,如果不配置就是mybatis默认的执行器
ReuseExecutor:一种重用预处理语句的执行器
BatchExecutor:针对批量处理的执行器,执行重用语句和批量更新。

SqlSession的调用过程实际就是Mybatis对JDBC的封装过程,这里内容与上一篇文章的内容很多重合。此处的重点在于对SqlSession的四个组件的介绍,加深对mybatis的核心调用过程的理解。代码分析过程仅以select为例,其他update,delete的流程基本一致。

SqlSession解析相关推荐

  1. SqlSession和SqlSessionFactory

    SqlSession:应用程序和数据库之间交互的一个单线程对象(非线程安全的)不同用户的连接不是同一个,数据库的C.R.U.D及事务的处理接口,select | update | delete | i ...

  2. MyBatis源码- SqlSession门面模式 selectList 源码解析

    文章目录 Pre 工程概览 pom.xml mybatis-config.xml UserMapper 测试类 selectList 源码解析 附 SQL log4j.properties app.p ...

  3. 2.MyBatis源码解析-SqlSession构建流程--阿呆中二

    SqlSession构建流程 MyBatis SqlSession构建流程 与我联系 MyBatis 本文是对mybatis 3.x源码深度解析与最佳实践学习的总结,包括XML文件解析流程.SqlSe ...

  4. MyBatis核心源码剖析(SqlSession XML解析 Mapper executor SQL执行过程 自定义类型处理器 缓存 日志)

    MyBatis核心源码剖析 MyBatis核心源码剖析 1 MyBatis源码概述 1.1 为什么要看MyBatis框架的源码 1.2 如何深入学习MyBatis源码 1.3 源码分析的5大原则 2 ...

  5. mybatis源码分析4 - sqlSession读写数据库完全解析

    1 引言和主要类 创建完sqlSession实例后,我们就可以进行数据库操作了.比如通过selectOne()方法查询数据库,如代码 // 读取XML配置文件 String resource = &q ...

  6. 原来SqlSession只是个甩手掌柜,高级面试题+解析

    前言 阿里巴巴,作为国内互联网公司的Top,算是业界的标杆,有阿里背景的程序员,也更具有权威性.作为程序员,都清楚阿里对于员工要求有多高,技术人员掌握的技术水平更是望尘莫及.所以,大厂程序员的很多经验 ...

  7. 原理分析之三:初始化(配置文件读取和解析)

    1. 准备工作 编写测试代码(具体请参考<Mybatis入门示例>),设置断点,以Debug模式运行,具体代码如下: Java代码   String resource = "my ...

  8. SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession作用域(Scope)和生命周期

    可以说每个MyBatis都是以一个SqlSessionFactory实例为中心的.SqlSessionFactory实例可以通过SqlSessionFactoryBuilder来构建.一是可以通过XM ...

  9. Java 面试知识点解析(七)——Web篇

    前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...

最新文章

  1. DIY强大的虚拟化环境-技术可行性部分
  2. php mysql特殊符号过滤微信小程序_微信小程序数据过滤(filter)方法
  3. python爬虫机器人价格_Python
  4. 原创:PHP内核研究:HASH表和变量
  5. jQuery LigerUI 使用教程入门篇
  6. mysql_fetch_array详解
  7. pycharm——常用快捷键操作
  8. 传智播客java课程表,先睹为快
  9. win10台式机前置耳机无声音解决方案
  10. python——基于Pandas读取asc文件并保存为csv格式
  11. 谷歌浏览器上传下载奔溃问题解决方法
  12. 电脑隐藏文件夹如何把它显示出来
  13. 时空序列预测之Memory In Memory: A Predictive Neural Network for Learning Higher-OrderNon-Stationarity
  14. chan算法matlab,MATLAB实现基于Chan氏算法的二维TDOA定位-Go语言中文社区
  15. Adversarial Attack的粗略总结
  16. 隔行插入行——《超级处理器》应用
  17. 基于TIVA库函数的TM4C1294XL使用笔记|TI单片机
  18. 【网页制作】jQuery操作css实现设置箭头图片
  19. 使用LiveServer打开Chrome浏览器是无痕模式时,关掉无痕模式的方法
  20. 解决微信公众号获取用户信息报48001错误

热门文章

  1. QTableWidget插入行解决最后一行异常情况
  2. xp系统锁定计算机快捷键,XP锁电脑的快捷键是哪个?
  3. 摘要/哈希/散列算法MD5 SHA1 SHA256 SHA512的区别和MAC算法
  4. AngularJS中使用HTML5手机摄像头拍照
  5. 第五部分: 定义度量值和主数据监管
  6. 利用NTLDR进入RING0的方法及MGF病毒技术分析笔记
  7. win10组件服务计算机是红色的,今天发现组件服务中我的电脑有个红色向下箭头,同时com+报错无法与MSDTC交流...
  8. 转转JAVA开发面经
  9. c语言 结构体 ppt,C语言结构体ppt课件
  10. 机器学习入门:第十七章 Boltzmann波尔兹曼机