**Mybatis 二级缓存深度解析:从原理到 Redis 整合实战**

在 Java 后端开发领域,MyBatis 作为最流行的 ORM 框架之一,其性能优化一直是面试与实战的核心考点。其中,一级缓存与二级缓存的机制、边界条件及自定义扩展,构成了 MyBatis 高级应用的基石。本专题课程《源码分析专题之 Mybatis 源码分析二级缓存》共十讲,总时长近两小时,旨在帮助开发者穿透 API 表象,深入理解缓存底层逻辑,并掌握生产环境下基于 Redis 的二级缓存落地方案。

课程开篇首先回顾了 MyBatis 一级缓存的工作原理,这是理解二级缓存的前提。讲师通过代码跟踪,详细解析了 SqlSession 级别缓存的生命周期,并重点梳理了四种禁止一级缓存的场景。这一部分不仅复习了基础知识,更为后续区分“会话级”与“命名空间级”缓存奠定了对比视角。随后,课程进入核心难点——二级缓存原理图解析。这里清晰地阐述了 Executor 层如何与 Cache 层交互,以及数据在 Mapper 命名空间下的共享机制。

值得注意的是,本课程并未止步于理论,而是引入了工业界广泛使用的 Redis 作为二级缓存载体。学员将跟随讲师亲手完成 Redis 的安装与基础使用,进而深入阅读 MyBatis 提供的缓存接口源码。课程重点讲解了如何实现自定义的 Redis 二级缓存实现类,通过源码分析揭示 MyBatis 如何通过 `Cache` 接口进行扩展,从而将内存缓存升级为分布式缓存。这一环节是打通“框架原理”与“工程实践”的关键,对于提升系统吞吐量、解决分布式环境下的数据一致性问题具有重要指导意义。

此外,课程还特意设置了一个极易踩坑的实验环节:探讨“不关闭 Session 为何两次查询仍需访问数据库”。这一反直觉的现象,深刻揭示了二级缓存与一级缓存协同工作时的微妙细节,以及提交事务对缓存刷新的影响。通过对比同一个 Session 内的二次缓存行为与不同 Session 间的缓存共享,学员能够建立起对缓存失效策略的直观认知。

最后,课程以完整的二级缓存整合案例收尾,涵盖了从配置开启、实体类序列化到最终性能对比测试的全流程。无论是为了应对高阶技术面试,还是为了在实际项目中优化 DAO 层性能,这门课程都提供了从源码底层到业务上层的完整知识闭环。建议学习者自备 IDEA 环境,跟随代码逐步调试,真正实现“知其然,更知其所以然”。

课程目录

1 01mybatis源码分析二级缓存原理 (07:39)
2 02mybatis源码分析一级缓存代码跟踪回顾 (08:50)
3 03mybatis禁止一级缓存的4种方式 (10:45)
4 04mybatis二级缓存原理图 (05:27)
5 05mybatis缓存工具redis的安装和使用过程 (11:35)
6 06mybatis自定义redis的二级缓存实现类 (22:17)
7 07mybatis的二级缓存源码分析 (09:36)
8 08如果不关闭session为何俩次都需要查找数据库 (11:32)
9 09同一个session的二次缓存实现 (06:21)
10 10二级缓存整合案例和源码分析 (22:44)