• 【Mybatis源码解析】- 整体架构及原理


    整体架构

    version-3.5.5

    在深入了解Mybatis的源码之前,我们先了解一下Mybatis的整体架构和工作原理,这样有助于我们在阅读源码过程中了解思路和流程。

    核心流程

    在上一遍的入门程序中,我们通过示例代码简单的介绍了如何通过Myabtis进行一个简单的增删改查,并用简单的步骤描述了示例程序的运行过程。为了更直观,其工作原理可理解成如下步骤:
    image

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

    整体架构

    image

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

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

    代码结构

    image

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

    1. annotations:注解配置
    2. binding:绑定、代理 提供 Mapper 接口与 XML 映射文件进行关联的支持
    3. builder:构建、配置解析
    4. cache:缓存
    5. cursor:游标
    6. datasource:数据源
    7. exceptions:异常(基本上每个包下都有自己的自定义异常)
    8. executor: SQL执行器
    9. io:资源加载
    10. jdbc:jdbc操作
    11. lang:语言 UsesJava7、UsesJava8
    12. logging:日志支持
    13. mapping:映射参数、结果、SQL
    14. parsing:解析器 XPath、Token解析
    15. plugin:插件支持
    16. reflection:反射功能封装
    17. scripting:脚本
    18. session: 会话
    19. transaction:事务
    20. type:类型 jdbcType,javaType互转
    21. util:工具包

    设计模式

    源码中使用了很多的设计模式

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

    总结

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

    作者:黑米面包派

    同步更新: https://www.wujiwen.cn

    欢迎一起交流进步
  • 相关阅读:
    Web service是什么?
    SQL截取字符串
    SQL Server中使用索引性能的比较
    一个C#中webservice的初级例子(一)
    short s1 = 1; s1 = s1 + 1;有错而short s1 = 1; s1 += 1正确。为何?
    SQL索引
    ORDER BY 子句在子查询和公用表表达式中无效的一种解决办法使用表变量
    创建 索引,
    时间的重叠
    SQLServer Datetime数据类型的转换
  • 原文地址:https://www.cnblogs.com/wujiwen/p/14777879.html
Copyright © 2020-2023  润新知