1. MyBatis 整体架构

这篇具有很好参考价值的文章主要介绍了1. MyBatis 整体架构。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

作为正式内容的第一篇,本次不会介绍具体的技术,而是先从全局视角上对 MyBatis 做一个俯瞰,了解 MyBatis 项目工程的组织结构,以及内部的核心功能模块。

工程结构

打开 MyBatis 的 Github 地址,就可以看到其代码工程结构。MyBatis 的分包方式简洁清晰、见名知义,可以清晰地看出内部的功能模块。下面我对其中较为核心的模块进行下简单介绍:
1. MyBatis 整体架构,MyBatis 设计思想,mybatis,架构

  1. annotatios:注解开发模块,定义了所有 Mapper 接口中用到的注解,常用的如 @Param,@Update、@Select、@Delete 等。
  2. binding:数据绑定模块,通过动态代理方式生成 Mapper 接口的实现类,并对其生命周期进行管理。
  3. builder:构建器模块,基于构建者模式(Builder Pattern),定义了 MyBatis 内部所有的构建器。MyBatis 的核心组件大部分都是通过 Builder 来构造的。
  4. cache:缓存模块,内置了各种缓存装饰器(Decorator),MyBatis 中耳熟能详的一级缓存、二级缓存就是基于该模块来实现的。
  5. cursor:支持游标的方式的数据查询,比较适合处理大数据量的查询场景。
  6. datasource:数据源模块,其中包含了 MyBatis 自定义的一款简易的数据源。
  7. exceptions:定义了常用的异常。
  8. executor:执行器模块,承载了 MyBatis 的核心执行流程,主要功能包括:Statement 创建、SQL 参数拼接、动态参数绑定、SQL 语句执行、结果集解析等。
  9. io:资源文件读取模块,用于定位和加载 MyBatis 相关的配置信息。
  10. jdbc:提供了操作原生 JDBC 的一些工具类。
  11. lang:这个包只包含了2个注解:@UsesJava7@UsesJava8 ,主要是用于标识类、方法等元素的 JDK 实现版本。
  12. logging:日志模块,MyBatis 自定义了统一的日志级别,饼整合了多种主流的第三方日志框架。
  13. mapping:映射模块,提供了配置文件与实体对象的映射功能,包括 Mapper 映射、参数映射、结果集映射等。
  14. parsing:字符串解析工具包,解析 SQL 语句中 $# 诸如此类的占位符,并生成 SQL 语句。
  15. plugin:插件模块,基于动态代理模式实现功能的扩展。著名的分页插件 PageHelper 就是基于 plugin 模块实现的。
  16. reflection:反射模块,是对 Java 底层的反射机制的二次封装,并提供了一系列的易用的反射工具类。
  17. scripting:动态 SQL 支持,mapper 配置文件中 ifwhere 等 SQL 标签的功能就是基于此实现的。
  18. session:会话核心模块,实现了 SqlSession 的功能。
  19. transaction:事务模块,MyBatis 基于原生 JDBC 实现了基础的事务功能。
  20. type:类型处理模块,内置了一系列的 数据库类型 <-> Java 类型的转换器。

功能架构

介绍完了 MyBatis 的工程结构之后,我们一起看一下它的整体功能架构。按照业内主流的共识,MyBatis 的功能可以按照以下层次划分:
1. MyBatis 整体架构,MyBatis 设计思想,mybatis,架构

  1. 基础支撑层:主要面向底层技术,提供了一系列业务无关的通用能力,对核心处理层提供支持。基础支撑层的很多组件都可以单独拿出来放在我们自己的项目里使用。
  2. 核心处理层:MyBatis 在原生 JDBC 的基础上进行了高度的封装与抽象,提取了配置解析、SQL 解析、参数映射、SQL 执行和结果集映射等几大核心功能,并开发了插件机制解决扩展性的问题。
  3. 接口层:对外统一暴露了 SqlSessionMapper 接口进行数据库操作,屏蔽了底层的实现细节,大大简化了数据访问功能的开发流程。

门面模式 Facade Pattern

从 MyBatis 的整体架构来看,它的结构类似于门面模式,SqlSession 就相当于一个 Facade,内部聚合了 MyBatis 核心处理层的各个组件,来实现对数据库的各种操作,而对外屏蔽了复杂的逻辑处理,仅保留简单的 API 供客户端使用。这样一来,客户端无需关心 MyBatis 内部的实现细节,减少了用户的理解和学习成本。

1. MyBatis 整体架构,MyBatis 设计思想,mybatis,架构
(图片来源:https://refactoring.guru/design-patterns/facade)文章来源地址https://www.toymoban.com/news/detail-521561.html

到了这里,关于1. MyBatis 整体架构的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 《移动互联网技术》 第十章 系统与通信: 掌握Android系统的分层架构设计思想和基于组件的设计模式

    🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 🌊 《IDEA开发秘籍》学会IDEA常用操作,工作效率翻倍~💐 🪁🍁 希望本文能够给您带来一定的帮助🌸文章粗浅,敬

    2024年02月16日
    浏览(46)
  • 1. MyBatis 整体架构

    作为正式内容的第一篇,本次不会介绍具体的技术,而是先从全局视角上对 MyBatis 做一个俯瞰,了解 MyBatis 项目工程的组织结构,以及内部的核心功能模块。 打开 MyBatis 的 Github 地址,就可以看到其代码工程结构。MyBatis 的分包方式简洁清晰、见名知义,可以清晰地看出内部

    2024年02月12日
    浏览(24)
  • 设计模式-01.设计思想

    此系列文章非本人原创,是学习笔记。 下面讲一些常见的设计思想 这个原则非常重要,是一种非常有效的提高代码质量的手段,在平时的开发中特别经常被用到。 如何解读原则中的“接口”二字? “基于接口而非实现编程”这条原则的英文描述是:“Program to an interface, n

    2024年02月07日
    浏览(58)
  • 算法设计思想——动态规划

    是一种常见的算法设计方法,用于解决一类重叠子问题的优化问题。他的基本思想是将问题分解成多个重叠的子问题,递归求解,并将子问题的求解缓存起来,避免重复计算,从而得到问题的解。 动态规划通常适用于以下两个条件的问题: 1.重叠子问题:原问题可以分解为若

    2024年02月03日
    浏览(35)
  • Spring核心设计思想

    目录 前言: Spring是什么 什么是IoC 传统开发思想 IoC开发思想 Spring IoC 什么是DI 小结:     官网中提出:Spring makes programming Java quicker, easier, and safer for everybody. Spring’s focus on speed, simplicity, and productivity has made it the world\\\'s most popular Java framework.     Spring 使编程 Java 对每个人来

    2023年04月17日
    浏览(35)
  • Spring 核心与设计思想

    ✏️作者:银河罐头 📋系列专栏:JavaEE 🌲 “种一棵树最好的时间是十年前,其次是现在” 通常所说的 Spring 指的是 Spring Framework(Spring 框架)。 Spring 是包含多种工具方法的 IoC 容器。 IoC(Inversion of Control): 控制反转 \\\"控制反转\\\"又是什么意思? 下面以一个程序来举例。 假如我

    2024年02月02日
    浏览(41)
  • 闪电网络协议设计思想剖析

    闪电网络可能是比特币之上部署的最受期待的技术创新。闪电网络,为由 Joseph Poon 和 Tadge Dryja 于2015年首次提出的支付层,承诺支持: 用户之间几乎无限数量的链下交易, 几乎免费, 同时利用比特币提供的安全性。 2016年时,至少三个公司——Poon 和 Dryja 的 Lightning、 Block

    2024年03月20日
    浏览(51)
  • 【Spring】核心与设计思想

     哈喽,哈喽,大家好~ 我是你们的老朋友: 保护小周ღ   谈起Java 圈子里的框架,最年长最耀眼的莫过于 Spring 框架啦,如今已成为最流行、最广泛使用的Java开发框架之一。不知道大家有没有在使用 Spring 框架的时候思考过这些问题, 什么是框架?Spring 是什么?如何理解

    2024年02月08日
    浏览(29)
  • Spring框架核心与设计思想

    我们一般所说的Spring指的是Spring Framework(Spring 框架),它是一个开源的框架,Spring支持广泛的应用场景,它可以让Java企业级的应用程序开发变得更简单,官方一点的回答:spring是J2EE应用程序框架,是轻量级的IoC和AOP的容器框架,主要是针对javaBean的生命周期进行管理的轻量级

    2023年04月15日
    浏览(33)
  • Spring框架概述及核心设计思想

    我们通常所说的 Spring 指的是 Spring Framework(Spring 框架),它是⼀个开源框架,有着活跃而庞大的社区,这就是它之所以能长久不衰的原因;Spring 支持广泛的应用场景,它可以让 Java 企业级的应用程序开发起来更简单。 用⼀句话概括 Spring: Spring 框架是包含了众多工具方法的

    2024年02月16日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包