构建源码环境

github下载最新Mybatis源码 github地址
Mybatis源码分析(一)构建环境及总体概况
Mybatis源码分析(一)构建环境及总体概况
clone中输入github复制的地址,然后等待下载完成

整体架构

Mybatis整体架构如下
Mybatis源码分析(一)构建环境及总体概况
MyBatis 的整体架构分为三层:

  1. 基础支持层:对一些基础功能进行封装,为核心处理层提供服务
  2. 核心处理层:主要负责执行SQL,并返回结果
  3. 接口层:通SqlSession类提供对数据库访问能力,隐藏了后续复杂的处理逻辑

代码结构

Mybatis源码分析(一)构建环境及总体概况
Mybatis的代码结构非常工整,堪称完美的java编程规范教科书,当我们深入源码我们会发现,Mybatis的注释量相当少,那是因为基本上我们可以通过名称就能明白其中的含义

虽然看名字我们就能对整个模块有所了解,但这里还是简单一一简绍一下

Mybatis源码分析(一)构建环境及总体概况

设计模式说明

在Mybatis中使用了相当多的设计模式,我们可以通过阅读Mybatis源码来学习设计模式在代码中的应用

  • SqlSession:门面模式
  • 日志模块 :适配器模式
  • 数据源模块:工厂模式
  • 数据连接池:策略模式
  • 缓存模块:装饰器模式
  • Executor模块:模板方法模式
  • Builder模块:建造者模式
  • Mapper接口:代理模式
  • 插件模块:责任链模式

执行流程

Mybatis源码分析(一)构建环境及总体概况

这里我们结合Mybatis源码汇总的示例代码进行分析
Mybatis源码分析(一)构建环境及总体概况

  1. 通过Resources读取mybatis配置文件 获取 Reader
  2. 通过 SqlSessionFactoryBuilder + Reader 构建 sqlSessionFactory
  3. 通过 sqlSessionFactory 获取 SqlSession
  4. 通过 SqlSession 获取 Mapper实例
  5. 执行Sql
  6. 关闭sqlSession

核心类

  • SqlSessionFactoryBuilde:读取配置信息(XML文件),创建SqlSessionFactory,建造者模式,方法级别生命周期
  • SqlSessionFactory:创建Sqlsession,工厂单例模式,存在于程序的整个应用程序生命周期
  • SqlSession:代表一次数据库连接,可以直接发送SQL执行,也可以通过调用Mapper访问数据库;线程不安全,要保证线程独享,方法级生命周期;
  • SQL Mapper:由一个Java接口和XML文件组成,包含了要执行的SQL语句和结果集映射规则。方法级别生命周期

源码调试

在Mybatis源码工程中就提供了类 AutoConstructorTest供我们调试,我们只需要修改 mybatis-config.xml中数据库的配置
Mybatis源码分析(一)构建环境及总体概况
然后执行单元测试即可,这里需要注意的是注释掉了每次都会执行的Sql脚本
Mybatis源码分析(一)构建环境及总体概况

这里需要注意的Sql脚本可能有一些问题需要手动执行,我的Mysql版本是8.0.16,其中定义的bit类型只能是输入0和1,但是插入脚本却是 1 2 3
Mybatis源码分析(一)构建环境及总体概况
如果报错可以自己改动一下相应的脚本,配置完成后执行运行一个单元测试试试
Mybatis源码分析(一)构建环境及总体概况

这里可以看到是没有任何问题的

源码下载

有需要后续可留言将本次源码上传至github供下载

参考

  • Mybatis技术内幕
  • https://xiaolyuh.blog.csdn.net/article/details/103290468

相关文章:

  • 2021-04-11
  • 2021-12-16
  • 2022-02-26
  • 2021-12-05
  • 2021-05-01
  • 2021-05-02
  • 2022-02-02
  • 2021-09-30
猜你喜欢
  • 2021-05-05
  • 2021-04-06
  • 2022-12-23
  • 2022-12-23
  • 2021-05-22
  • 2021-08-23
  • 2021-06-10
相关资源
相似解决方案