Java码农之路 潜水
  • 13发帖数
  • 13主题数
  • 0关注数
  • 0粉丝
开启左侧

「Mybatis源码解析」- 整体架构及原理

[复制链接]
 楼主| Java码农之路 发表于 2022-3-22 13:32:24 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
version-3.5.5
在深入了解Mybatis的源码之前,我们先了解一下Mybatis的整体架构和工作原理,这样有助于我们在阅读源码过程中了解思绪和流程。
核心流程

在上一遍的入门程序中,我们通过示例代码简单的先容了怎样通过Myabtis举行一个简单的增删改查,并用简单的步骤描述了示例程序的运行过程。为了更直观,其工作原理可明白成如下步骤:

                               
登录/注册后可看大图


  • 初始化阶段:读取XML配置文件和注解中的配置信息,创建配置对象,并完成各个模块的初始化的工作
  • 代理阶段:封装iBatis的编程模型,使用mapper接口开发的初始化工作
  • 数据读写阶段:数据读写阶段:通过SqlSession完成SQL的解析,参数的映射、SQL的执行、效果的解析过程
整体架构


                               
登录/注册后可看大图

我们从工作原理图中也能看到架构的影子。这是一个Mybatis的逻辑划分架构图,可以分成三层

  • 接口层:通SqlSession类提供对数据库访问能力,隐藏了后续复杂的处理逻辑。
  • 核心处理层:重要负责执行SQL,并返回效果
  • 底子支持层:对一些底子功能举行封装,为核心处理层提供服务。
代码结构


                               
登录/注册后可看大图

Mybatis的工程结构非常的清晰,根本上通过报名就可以了解到该模块的功能使用场景,能非常敏捷的帮我们定位代码和了解功能。

  • annotations:注解配置
  • binding:绑定、代理 提供 Mapper 接口与 XML 映射文件举行关联的支持
  • builder:构建、配置解析
  • cache:缓存
  • cursor:游标
  • datasource:数据源
  • exceptions:异常(根本上每个包下都有自己的自定义异常)
  • executor: SQL执行器
  • io:资源加载
  • jdbc:jdbc操纵
  • lang:语言 UsesJava7、UsesJava8
  • logging:日记支持
  • mapping:映射参数、效果、SQL
  • parsing:解析器 XPath、Token解析
  • plugin:插件支持
  • reflection:反射功能封装
  • scripting:脚本
  • session: 会话
  • transaction:事务
  • type:类型 jdbcType,javaType互转
  • util:工具包
计划模式

源码中使用了许多的计划模式

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

总的来说,Mybatis的代码还算比较好明白的,相对简单易懂。在了解JDBC的操纵原理后,在结合Mybatis的运行原理,就能大致了解其工作流程了。后续我们将一步一步尽心分析!

精彩评论15

Marianas 发表于 2022-3-22 13:39:18 | 显示全部楼层
转发了
雲中飞鶴 发表于 2022-3-22 16:36:22 | 显示全部楼层
转发了
智慧靖哥哥 发表于 2022-3-22 17:13:23 | 显示全部楼层
转发了
cgyypg 发表于 2022-3-22 17:23:00 | 显示全部楼层
转发了
星空下的蓝精灵 发表于 2022-3-22 20:20:44 | 显示全部楼层
转发了
依程代人 发表于 2022-3-22 23:27:02 | 显示全部楼层
转发了
hanghangcool 发表于 2022-3-24 22:36:57 | 显示全部楼层
mybatis源码解析
适缘791 发表于 2022-3-25 22:43:18 | 显示全部楼层
转发了
君主不是他 发表于 2022-3-29 02:37:37 | 显示全部楼层
转发了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

猜你喜欢
在线客服邮箱
wxcy#wkgb.net

邮箱地址#换为@

Powered by 创意电子 ©2018-现在 专注资源实战分享源码下载站联盟商城