入门
MyBatis 概述与环境搭建
核心配置文件
configuration 元素结构
教程文章掌握 mybatis-config.xml 根元素结构和子元素顺序规则,理解 MyBatis 配置文件的完整组织形式。
environments 数据源配置
教程文章掌握 MyBatis 多环境数据源配置,包括连接池、事务管理和开发/测试/生产环境切换。
properties 属性文件
教程文章掌握使用 db.properties 外部化数据库配置,实现配置与代码分离,支持多环境管理和敏感信息加密。
settings 全局设置
教程文章掌握 MyBatis settings 全局配置,包括缓存、懒加载、驼峰映射、日志等核心参数的含义和使用场景。
typeAliases 类型别名
教程文章掌握 MyBatis 类型别名配置,包括内置别名、自定义别名和包扫描,简化 Mapper XML 中的类型引用。
SQL 映射文件基础
参数传递与结果映射
接口绑定与动态代理
基本 CRUD 实战
进阶
动态 SQL
bind 变量绑定
教程文章bind 标签在动态 SQL 中创建新变量,支持 OGNL 表达式拼接,常用于模糊查询、大小写转换、兼容性适配等场景,减少数据库函数依赖。
choose-when-otherwise 分支
教程文章choose-when-otherwise 提供类似 Java switch 的多分支选择逻辑,按顺序匹配 when 条件,仅执行第一个为 true 的分支,otherwise 作为默认兜底。
foreach 循环遍历
教程文章foreach 标签用于遍历集合、数组、Map 等数据结构,通过 collection、item、open、close、separator 等属性动态生成 IN 查询、批量 INSERT、多条件拼接等 SQL 片段。
if 条件判断
教程文章if 标签根据 test 属性中的 OGNL 表达式决定是否包含 SQL 片段,是动态 SQL 最基础的条件判断标签,广泛用于可选查询条件、字段过滤等场景。
set 更新字段
教程文章set 标签智能处理 UPDATE 语句中的 SET 关键字和多余逗号,支持选择性字段更新,避免全量覆盖,提升更新操作的灵活性和安全性。
sql 片段复用
教程文章通过 `<sql>` 标签提取公共 SQL 片段,配合 `<include>` 标签实现列定义、WHERE 条件、JOIN 语句的跨 Statement 复用,减少冗余和维护成本。
trim 自定义裁剪
教程文章trim 标签提供灵活的 SQL 前缀/后缀控制能力,通过 prefix、suffix、prefixOverrides、suffixOverrides 四个属性实现复杂动态 SQL 场景的精确裁剪。
where 智能条件
教程文章where 标签自动处理 WHERE 关键字的添加与移除,智能去除首个多余的 AND 或 OR 前缀,简化动态条件拼接,避免手动处理边界情况。
高级结果映射
discriminator 鉴别器
教程文章介绍 MyBatis discriminator 鉴别器的用法,根据列值动态选择 resultMap 映射规则,支持 inheritance 继承映射。
一对一关联映射
教程文章介绍 MyBatis association 元素配置一对一关联查询,支持嵌套结果映射和子查询两种方式,对比 join 与 subquery 差异。
一对多集合映射
教程文章介绍 MyBatis collection 元素配置一对多关联查询,支持嵌套结果映射和子查询,详解 ofType 属性的使用。
多对多关联查询
教程文章介绍 MyBatis 通过中间表实现多对多关系映射,使用多个 collection 嵌套实现双向关联,详解 JOIN 和子查询两种方案。
嵌套查询与 N+1 问题
教程文章介绍 MyBatis 嵌套查询原理,分析 N+1 问题成因,提供 fetchType 懒加载、批量查询和 JOIN 优化方案。
延迟加载配置
教程文章介绍 MyBatis 延迟加载配置方法,包括全局开关、fetchType 局部控制、lazyLoadTriggerMethods 触发策略及相关注意事项。
缓存机制
一级缓存机制
教程文章理解 Session 级别缓存原理,掌握缓存命中条件、失效场景与 local cache scope 配置。
二级缓存配置
教程文章掌握 namespace 级别缓存的启用方式,配置 eviction、flushInterval、size 等核心参数。
缓存脏数据处理
教程文章理解多表关联更新导致缓存不一致的根因,掌握 flushCache、cache-ref 等解决方案。
缓存读写策略
教程文章配置 readOnly 和 serialize 避免并发问题与脏读,理解缓存穿透的场景与防御策略。
自定义缓存实现
教程文章实现 Cache 接口集成 Redis、Ehcache 等第三方缓存,掌握分布式缓存的实现模式。
插件机制
Interceptor 接口实现
教程文章掌握 MyBatis Interceptor 接口的三个核心方法,使用 @Intercepts/@Signature 注解声明拦截点,编写完整插件并配置属性参数。
分页插件原理
教程文章深入理解 MyBatis 分页插件的拦截机制,实现物理分页的 SQL 改写(LIMIT/OFFSET),支持多数据库方言,优化 COUNT 查询性能。
性能监控插件
教程文章实现 MyBatis SQL 执行拦截器,记录执行时间,识别慢查询,收集性能指标,助力数据库性能分析与优化。
插件拦截原理
教程文章深入理解 MyBatis 四大核心拦截对象(Executor/StatementHandler/ParameterHandler/ResultSetHandler),掌握拦截链、代理机制与插件编写原理。
TypeHandler 自定义类型处理器
JSON 类型处理
教程文章掌握 MyBatis 中 JSON 类型字段与 Java 对象的双向转换,实现基于 Jackson/Gson 的通用 JSON TypeHandler,并学习 PostgreSQL JSONB 类型的处理方法。
TypeHandler 接口
教程文章掌握 MyBatis TypeHandler 接口定义与核心方法,理解参数设置与结果读取两个方向的类型转换机制,了解内置 TypeHandler 体系。
枚举字段映射
教程文章掌握 MyBatis 中数据库枚举字段到 Java 枚举的映射方式,包括 resultMap 字段级指定、全局注册、注解配置和 null 值处理策略。
枚举类型处理
教程文章掌握 MyBatis 内置的两种枚举 TypeHandler(EnumTypeHandler 与 EnumOrdinalTypeHandler),学会编写自定义枚举处理器实现 code/name 映射。
批量操作与性能优化
注解开发
@One 与 @Many 关联
教程文章使用 @One 和 @Many 注解实现一对一和一对多关联查询,掌握 select 属性子查询调用与 column 属性列映射传参。
@Results 结果映射
教程文章使用 @Results / @Result / @ResultMap 注解配置结果集映射,替代 XML 中的 <resultMap>,处理列名与属性名不一致及复杂类型映射。
@Select 等基础注解
教程文章使用 @Select / @Insert / @Update / @Delete 注解直接编写 CRUD 语句,替代 XML Mapper 文件,适用于简单查询场景。
@SelectProvider 动态 SQL
教程文章使用 @SelectProvider 等 Provider 注解通过 Java 类动态生成 SQL,掌握 Builder 模式构建条件 SQL,替代 XML 动态 SQL 标签。
与 Spring 集成
Mapper 接口注入
教程文章讲解通过 @Autowired 注入 Mapper 代理对象的方法,@MapperScan 注解的使用及接口代理创建原理。
Spring-MyBatis 集成
教程文章讲解 SqlSessionFactoryBean、MapperScannerConfigurer 的配置方法,Spring XML 配置方式及 Bean 生命周期管理。
事务管理集成
教程文章讲解 Spring 事务管理与 MyBatis 的集成,包括 @Transactional 注解、DataSourceTransactionManager 配置及回滚规则。
多数据源配置
教程文章讲解多 SqlSessionFactory 配置方法、动态数据源路由实现及 AbstractRoutingDataSource 的使用。
专家
源码架构与核心原理
Executor 执行器体系
教程文章深入分析MyBatis三种Executor执行器的内部实现差异和适用场景,涵盖Simple/Reuse/Batch的执行策略、缓存机制和性能对比。
ParameterHandler 参数处理
教程文章深入分析ParameterHandler如何将参数对象转换为SQL占位符值,涵盖TypeHandler类型转换机制、参数映射解析和自定义TypeHandler扩展。
ResultSetHandler 结果处理
教程文章深入分析ResultSetHandler如何将JDBC ResultSet自动映射为Java对象,涵盖ResultMap解析、自动映射策略、嵌套结果集处理和延迟加载机制。
SqlSession 生命周期
教程文章深入分析SqlSession从创建到销毁的完整生命周期,涵盖事务提交、回滚、关闭等关键节点,以及线程安全性和连接池管理机制。
SqlSessionFactory 构建流程
教程文章深入分析MyBatis从XML配置文件解析到创建SqlSessionFactory的完整流程,涵盖Configuration对象构建、Mapper注册、插件加载等核心环节。
StatementHandler 语句处理
教程文章深入分析StatementHandler如何创建PreparedStatement并设置参数,涵盖RoutingStatementHandler路由机制、三种Statement处理策略及参数绑定流程。
性能调优实战
慢查询定位与优化
教程文章通过慢查询日志、监控工具和执行计划定位性能瓶颈 SQL,掌握索引创建策略、SQL 改写技巧和 MyBatis 映射优化方法,系统性提升查询性能。
执行计划分析
教程文章使用 EXPLAIN 分析 SQL 执行计划,深入解读 type、possible_keys、key、key_len、Extra 等关键字段含义,掌握索引优化策略与执行计划调优方法。
批量操作性能优化
教程文章对比 BATCH 执行器与 foreach 方式的性能差异,掌握合理批量大小设置、事务边界控制及内存管理策略,实现高效批量 INSERT/UPDATE 操作。
缓存策略优化
教程文章设计合理的 MyBatis 缓存策略,解决缓存穿透、击穿、雪崩三大问题,掌握一级缓存、二级缓存与分布式缓存的整合方案,提升高频查询性能。
连接池调优
教程文章详解 HikariCP 与 Druid 连接池参数配置,掌握核心池大小、空闲超时、最大等待时间等关键参数的调优策略,平衡并发性能与资源消耗。
插件开发高级应用
SQL 审计日志插件
教程文章通过拦截 StatementHandler 实现 SQL 审计日志插件,记录 SQL 文本、执行时间、参数信息,用于问题排查与合规审计。
分页插件深度定制
教程文章实现支持多数据库方言的分页插件,涵盖 SQL 改写、Count 查询优化、分页参数传递与 PageHelper 深度定制方案。
多插件执行顺序
教程文章深入理解多插件配置顺序对拦截链执行的影响,掌握签名匹配、插件叠加、执行顺序控制与依赖关系处理。
插件代理链原理
教程文章深入分析 Plugin.wrap 如何创建 JDK 动态代理对象形成拦截链,解析 InterceptorChain.pluginAll 的链式构建机制与代理嵌套执行流程。
数据脱敏插件
教程文章开发透明的数据脱敏插件,通过拦截 ResultSetHandler 在结果集映射阶段自动加密/解密敏感字段,实现存储加密与查询脱敏。
多租户与数据权限
动态数据源切换
教程文章基于 Spring AbstractRoutingDataSource 实现运行时数据源动态切换,结合 MyBatis 实现读写分离、多数据源路由、租户级数据源隔离,支持事务内数据源一致性。
多租户架构设计
教程文章深入解析多租户架构的三种模式(独立数据库、独立 Schema、共享数据库),结合 MyBatis 拦截器实现租户自动识别与数据隔离,提供完整的架构设计与落地方案。
数据权限拦截器
教程文章基于 JSqlParser 解析 SQL AST,根据用户角色动态注入 WHERE 权限条件,实现部门级、项目级、个人级数据权限过滤,支持拦截器链与自定义权限注解。
租户隔离策略
教程文章详解三种租户隔离策略:独立数据库(物理隔离)、共享数据库独立 Schema(逻辑隔离)、共享数据库共享 Schema(行级隔离),分析各自的实现方案、安全边界与适用场景。
生产环境最佳实践
高级映射与复杂场景
动态表名与列名
教程文章使用 ${} 进行动态表名/列名拼接,处理分库分表场景下的路由查询,掌握 SQL 注入防范策略和 MyBatis 拦截器实现方案。
复杂继承映射
教程文章使用 discriminator 鉴别器实现继承关系映射和多态查询,掌握单表/多表/连接表三种继承映射策略,处理复杂类层次结构的数据库映射。
大数据量查询优化
教程文章使用流式查询和 ResultHandler 游标处理百万级数据导出与分析,对比传统查询的内存瓶颈,掌握大数据量场景下的性能优化策略。
嵌套结果集映射优化
教程文章分析 MyBatis 嵌套结果集映射的性能瓶颈,优化 association 关联查询策略,掌握 columnPrefix 多表别名隔离技巧,提升复杂查询效率。
软删除与逻辑删除
教程文章实现全局逻辑删除拦截器自动过滤已删除数据,整合 MyBatis-Plus @TableLogic 注解,对比物理删除与逻辑删除的应用场景,掌握数据恢复与审计策略。
生态工具与扩展
MyBatis-Plus 集成
教程文章掌握 MyBatis-Plus 增强特性,理解 BaseMapper、IService 核心接口,集成代码生成器与条件构造器,提升开发效率。
PageHelper 分页插件
教程文章掌握 PageHelper 分页插件的集成使用,理解其基于 ThreadLocal 的分页参数传递与拦截器改写 SQL 的原理,支持多数据库方言。
代码生成器定制
教程文章掌握 MyBatis Generator 插件开发,自定义代码模板与生成规则,生成符合项目规范的 Entity、Mapper、Service 层代码。
生态工具对比
教程文章全面对比 MyBatis 生态中的常用工具(MyBatis Generator、PageHelper、MyBatis-Plus、Plus-Join、mybatis-spring 等),提供选型建议与组合方案。
第三方缓存集成
教程文章掌握 MyBatis Cache 接口规范,集成 Redis/Ehcache 等分布式缓存实现二级缓存,理解序列化、缓存穿透与失效策略。