MyBatis 源码分析
文章平均质量分 96
MyBatis 源码分析
攻城狮不是猫
公众号:攻城狮不是猫,分享各种编程语言、开发技术、分布式与微服务架构、分布式数据库、分布式事务、 云原生、大数据与云计算技术和渗透技术。另外,还会分字各种视频资源,面试题和面试技巧。
展开
-
MyBatis 源码分析 - 插件机制
一般情况下,开源框架都会提供插件或其他形式的拓展点,供开发者自行拓展。这样的好处是显而易见的,一是增加了框架的灵活性。二是开发者可以结合实际需求,对框架进行拓展,使其能够更好的工作。以 MyBatis 为例,我们可基于 MyBatis 插件机制实现分页、分表,监控等功能。由于插件和业务无关,业务也无法感知插件的存在。因此可以无感植入插件,在无形中增强功能。开发 MyBatis 插件需要对 MyBatis 比较深了解才行,一般来说最好能够掌握 MyBatis 的源码,门槛相对较高。原创 2024-04-19 11:02:41 · 802 阅读 · 0 评论 -
MyBatis 源码分析 - 缓存原理
在 MyBatis 中,Cache 是缓存接口,定义了一些基本的缓存操作,所有缓存类都应该实现该接口。MyBatis 内部提供了丰富的缓存实现类,比如具有基本缓存功能的 PerpetualCache,具有 LRU 策略的缓存 LruCache,以及可保证线程安全的缓存 SynchronizedCache 和具备阻塞功能的缓存 BlockingCache 等。除此之外,还有很多缓存实现类,这里就不一一列举了。需要特别说明的是,MyBatis 在实现缓存模块的过程中,使用了装饰模式。原创 2024-04-18 10:20:18 · 885 阅读 · 0 评论 -
MyBatis 源码分析 - 内置数据源
PooledDataSource 需要借助两个辅助类帮其完成功能,这两个辅助类分别是 PoolState 和 PooledConnection。PoolState 用于记录连接池运行时的状态,比如连接获取次数,无效连接数量等。同时 PoolState 内部定义了两个 PooledConnection 集合,用于存储空闲连接和活跃连接。PooledConnection 内部定义了一个 Connection 类型的变量,用于指向真实的数据库连接。原创 2024-04-18 10:19:29 · 452 阅读 · 0 评论 -
MyBatis 源码分析 - SQL 的执行过程
在前面的文章中,我分析了配置文件和映射文件的解析过程。经过前面复杂的解析过程后,现在,MyBatis 已经进入了就绪状态,等待使用者发号施令。本篇文章我将分析MyBatis 执行 SQL 的过程,该过程比较复杂,涉及的技术点很多。为 mapper 接口生成实现类根据配置信息生成 SQL,并将运行时参数设置到 SQL 中一二级缓存的实现插件机制数据库连接的获取与管理查询结果的处理,以及延迟加载等如果大家能掌握上面的技术点,那么对 MyBatis 的原理将会有很深入的理解。原创 2024-04-17 17:33:03 · 1296 阅读 · 0 评论 -
MyBatis 源码分析 - 映射文件解析过程
在上一篇文章中,我详细分析了 MyBatis 配置文件的解析过程。由于上一篇文章的篇幅比较大,加之映射文件解析过程也比较复杂的原因。所以我将映射文件解析过程的分析内容从上一篇文章中抽取出来,独立成文,于是就有了本篇文章。在本篇文章中,我将分析映射文件中出现的一些及节点,比如 ,,, 等。除了分析常规的 XML 解析过程外,我还会向大家介绍 Mapper 接口的绑定过程等。原创 2024-04-17 17:29:21 · 1259 阅读 · 0 评论 -
MyBatis 源码分析 - 配置文件解析过程
在上一篇文章中,我介绍了 MyBatis 的一些基础知识,用于为本文及后续的源码分析文章进行铺垫。经过前面的铺垫,我觉得是时候后分析一下 MyBatis 源码了。在本篇文章中,我将从 MyBatis 解析配置文件的过程着手进行分析。并会在分析的过程中,向大家介绍一些配置的使用方式和用途。MyBatis 的配置比较丰富,很难在一篇文章中把所有配置的解析过程分析完。所以关于配置文件的解析,这里会分两篇文章进行讲解。本篇文章将会分析诸如settings以及等标签的解析过程。原创 2024-04-15 10:09:32 · 1198 阅读 · 1 评论 -
MyBatis 源码分析系列文章导读
MyBatis 的前身是 iBatis,其是 Apache 软件基金会下的一个开源项目。2010年该项目从 Apache 基金会迁出,并改名为 MyBatis。同期,iBatis 停止维护。MyBatis 是一种半自动化的 Java 持久层框架(persistence framework),其通过注解或 XML 的方式将对象和 SQL 关联起来。原创 2024-04-15 10:06:39 · 1156 阅读 · 0 评论