【MyBatis 运行过程】

传统的 JDBC 编程查询数据库的代码和过程总结:

(一)、加载驱动。

(二)、创建连接,Connection 对象。

(三)、根据 Connection 创建 Statement 或者 PreparedStatement 来执行 sql 语句。

(四)、返回结果集到 ResultSet 中。

(五)、手动将 ResultSet 映射到 JavaBean 中。

编码方式实现 MyBatis 查询数据库,方便大家理解,不使用 SpringMybatis,加入 Spring 后整体流程会复杂很多。使用 MyBatis 后能将原来的传统的 JDBC 编程编的如此简单,具体流程总结:

(一)、使用配置文件构建 SqlSessionFactory。

(二)、使用 SqlSessionFactory 获得 SqlSession,SqlSession 相当于传统 JDBC 的 Conection。

(三)、使用 SqlSession 得到 Mapper。

(四)、用 Mapper 来执行 sql 语句,并返回结果直接封装到 JavaBean 中。

总结

【MyBatis 源码分析】

下面来具体分析 MyBatis 代码的执行过程

(一)、整体架构

(二)、源码分析

大部分框架的代码流程:

(三)、我们的配置文件:

(四)、SqlSession 的实现流程

SqlSession 的接口定义:(里面定义了增删改查和提交回滚等方法)

接下来用 sqlSession 获取对应的 Mapper:

DefaultSqlSession 的 getMapper 实现:

MapperRegistry 里 getMapper 的最终实现:

这里就要说明一下,我们的接口里面只定义了抽象的增删改查,而这个接口并没有任何实现类,那么这个 xml 到底是如何与接口关联起来并生成实现类那?

接下来我们看看 newInstance 的具体实现:

(五)、正常流程的动态代理:

与传统的动态代理相比,MyBatis 的接口是没有实现类的,那么它又是怎么实现动态代理的那?

MapperProxy 的源码:

MapperMethod 的定义:

进入 DefaultSqlSession 执行对应的 sql 语句:

Executor 的实现类里面执行 query 方法:

需要更多教程,微信扫码即可

MyBatis 源码自我解读相关推荐

  1. 深入浅出Mybatis系列(三)---配置详解之properties与environments(mybatis源码篇)

    我们通过对mybatis源码的简单分析,可看出,在mybatis配置文件中,在configuration根节点下面,可配置properties.typeAliases.plugins.objectFa ...

  2. MyBatis源码-深入理解MyBatis Executor的设计思想

    文章目录 Pre JDBC的执行过程 JDBC Demo JDBC Statement 接口 MyBatis执行过程 四大组件 组件之间的关系 Executor 执行器组件 架构总览 接口继承关系 P ...

  3. Mybatis源码解读-设计模式总结

    虽然我们都知道有26个设计模式,但是大多停留在概念层面,真实开发中很少遇到,Mybatis源码中使用了大量的设计模式,阅读源码并观察设计模式在其中的应用,能够更深入的理解设计模式. Mybatis至少 ...

  4. MyBatis源码-解读Executor的三个实现类之SimpleExecutor(简单执行器)

    文章目录 Pre Executor 执行器 接口继承关系 SimpleExecutor(简单执行器) 入门小demo 实例化SimpleExecutor doQuery方法 Pre MyBatis源码 ...

  5. 2020年Mybatis源码解读

    目录标题 为什么需要ORM 框架Mybatis ORM框架-前身是Ibatis Mysql映射文件三要素: Mybatis 单独开发-快速入门 mybatis核心配置xml resultType 还是 ...

  6. MyBatis源码-解读Executor的三个实现类之BatchExecutor(批处理执行器)

    文章目录 Pre Executor 执行器 接口继承关系 BatchExecutor(重用执行器) 入门小demo 源码 BatchExecutor VS ReuseExecutor Pre MyBa ...

  7. MyBatis源码解读之源码结构

    2019独角兽企业重金招聘Python工程师标准>>> 目的 文章主要了解MyBatis源码结构,每个包的具体功能.如何去学习MyBatis源码. MyBatis源码结构导图 查看大 ...

  8. MyBatis源码骨架分析

    源码包分析 MyBatis 源码下载地址:https://github.com/MyBatis/MyBatis-3 MyBatis源码导入过程: 下载MyBatis的源码 检查maven的版本,必须是 ...

  9. Mybatis源码分析第一天------Mybatis实用篇

    Mybatis源码分析第一天------Mybatis实用篇 一切最基本的操作就是参考官方文档:https://mybatis.org/mybatis-3/zh/configuration.html ...

最新文章

  1. ListView 空值时的友好提示
  2. 6、spring拦截器
  3. Python 学习笔记 -- 序列的基本使用
  4. data后缀文件解码_WMA文件格式和解码流程 | 学步园
  5. CRM Transaction处理中的权限控制
  6. 【笔记】跨域重定向中使用Ajax(XHR请求)导致跨域失败
  7. python encode gbk_[转]Python UnicodeEncodeError: 'gbk' codec can't encode character 解决方法
  8. C++之智能指针std::shared_ptr简单使用和理解
  9. c语言输入一个数存数组,//从键盘上输入若干整数,并将其存入数组中,并统计输入数据的个...
  10. (17)FPGA面试题永久防止亚稳态发生
  11. Vue.js之使用vue-cli初始化项目
  12. 6. laravel 控制器
  13. 中国元宇宙企业有哪些?
  14. html5通讯录源码,通讯录web版
  15. 双光子成像和近红外二区荧光共聚焦成像/树状大分子CT/MRI双模态成像造影剂/锰螯合物磁共振成像(MRI)
  16. java计算机毕业设计高校防疫物资管理系统MyBatis+系统+LW文档+源码+调试部署
  17. 通俗易懂解释汉明码(附MATLAB实现代码)
  18. 十二道锋味——既是食,也是人
  19. 一维卷积Conv1D
  20. 数据中心云化将是大势所趋 | 工信部称1亿以上用户信息泄露为特大网络安全事件

热门文章

  1. 微信暗黑模式终于来了!这次微信对苹果认怂了?腾讯张军回应...
  2. 打扰了!MacBook Pro 16英寸国行版正式开售:顶配46421元
  3. 网友问有没有小米MIX 4 雷军的回应耐人寻味
  4. 共享充电宝还在打仗,支付宝已经笑了
  5. 45W快充没了?三星Galaxy Note10 Pro可能还是25W快充
  6. 全球首富贝索斯离婚第二天 出轨对象女主播宣布离婚...
  7. 华为nova 4e 3月14日发布:麒麟710+3200万前摄
  8. asp(or JSP)与html的不同
  9. 虚函数,虚基类 与纯虚函数 二
  10. 面试了上百位性能测试后,我发现了一个令人不安的事实