很多开发者在使用 MyBatis 时,往往停留在“会写 XML”和“会配注解”的层面,一旦遇到复杂的动态 SQL 拼接、性能瓶颈排查或自定义扩展需求,就容易陷入盲目试错的困境。这门《MyBatis 源码解析》正是为了解决这一痛点,它不局限于 API 的使用教学,而是深入底层,剖析 MyBatis 的核心运行机制。适合那些已经掌握 Java 基础、熟悉 JDBC 原理,并具备一定 Spring 整合经验的中级开发者。如果你只是刚接触数据库操作,建议先补齐 JDBC 和基础 ORM 知识,再进入本课程,否则面对源码级的逻辑梳理会感到吃力。

核心机制与底层原理

课程前半部分迅速覆盖了 MyBatis 的入门、配置详解、映射文件以及注解开发,这些是基础铺垫,建议快速过一遍以统一概念。真正的重点从动态 SQL 开始,特别是 if、where、set 和 foreach 标签背后的解析逻辑,理解这些有助于你在处理复杂查询条件时写出更健壮、更少 Bug 的代码。随后课程深入探讨了 MyBatis 与 Spring 的集成细节,以及延迟加载的实现原理。延迟加载是实际项目中极易出错且难以调试的区域,通过源码视角理解其触发时机和代理机制,能让你彻底告别“懒加载失效”或“死循环调用”的噩梦。此外,继承映射的处理也是理解多表关系映射的关键,这部分内容能帮你理清对象组装过程中的数据流向。

缓存体系与扩展能力

后半部分聚焦于高性能和可扩展性,这是一门进阶课的分水岭。一级缓存的本质是 SqlSession 级别的生命周期管理,而二级缓存则涉及命名空间、事务一致性及并发安全问题。课程通过两节详解拆解二级缓存的存储结构与失效策略,这不仅是理论,更是解决生产环境数据不一致问题的关键。插件开发部分则是 MyBatis 高级能力的体现,通过拦截器机制,你可以实现 SQL 日志记录、性能监控、数据权限控制等自定义功能。类型处理器的详解则解决了自定义类型与数据库字段映射中的痛点,比如枚举类型、JSON 字段的自动转换。学完这些,你不仅能独立解决常见的 MyBatis 疑难杂症,还能根据业务需求开发自定义插件,优化 SQL 执行性能,甚至构建团队内部的 MyBatis 增强框架。

建议的学习路径是:先以实际项目中的复杂 SQL 场景为驱动,对照源码理解动态 SQL 的构建过程;接着通过调试工具跟踪一级和二级缓存的生命周期,验证理论推导;最后尝试编写一个简单的 SQL 耗时统计插件,将插件开发的知识落地。资料包中包含了详细的源码注释和配套练习代码,不要只看不练,务必在本地环境中复现每一处关键逻辑的断点调试。只有当你能清晰地回答“为什么这笔查询慢”、“缓存何时失效”、“如何在不修改业务代码的情况下拦截 SQL”时,才算真正掌握了 MyBatis 的核心架构。

课程目录

1 MyBatis课程安排 (10:34)
2 MyBatis概述与入门案例 (38:55)
3 MyBatis配置详解 (07:47)
4 MyBatis映射文件详解 (18:13)
5 MyBatis注解方式开发 (32:17)
6 动态SQL之if (23:56)
7 动态SQL之where,set (25:58)
8 动态SQL之foreach (11:45)
9 MyBatis与Spring的集成 (46:29)
10 mybatis延迟加载 (51:25)
11 mybatis继承映射 (07:39)
12 mybatis一级缓存 (47:36)
13 二级缓存详解1 (10:30)
14 二级缓存详解2 (52:56)
15 插件开发1 (53:39)
16 MyBatis插件开发 (24:18)
17 MyBatis类型处理器详解 (41:46)
18 通用Mapper使用 (49:28)
19 通用Mapper分页查询 (24:29)
20 MyBatis-Plus详解 (30:20)
21 MyBatis整体层次结构讲解 (15:36)
22 MyBatis加载过程详解以及内部重要成员 (44:12)
23 MyBatis的加载阶段(初始化)源码分析 (01:00:44)
24 MyBatis的Binding阶段源码分析 (51:59)
25 SqlSession细粒度分析 (01:00:47)
26 Executor详解 (19:01)
27 StatementHandler源码分析 (32:03)
28 ParameterHandler与ResultSetHand (31:33)
29 SqlSessionFactoryBean源码分析 (25:51)
30 MapperScannerConfigurer源码分析 (47:04)
31 MyBatis插件源码分析 (58:23)