Skip to content

MyBatis 知识体系

  MyBatis 是一款优秀的半自动持久层框架,它通过 XML 或注解将 SQL 与 Java 对象映射,让你能自由编写 SQL 的同时享受 ORM 的便利。相比 Hibernate 的全自动映射,MyBatis 更灵活、更轻量,是互联网公司最主流的数据库访问框架。

为什么选择 MyBatis?

JDBC 的痛点:
  ① 重复代码:每次都要获取连接、创建 Statement、处理 ResultSet、关闭资源
  ② 硬编码 SQL:SQL 写在 Java 代码里,修改需要重新编译
  ③ 结果集映射繁琐:手动从 ResultSet 取值、类型转换、封装对象
  ④ 连接管理复杂:手动管理数据库连接,容易泄露

MyBatis 的解决:
  ① SQL 与 Java 代码分离 → XML 或注解配置 SQL
  ② 自动映射 → 结果集自动映射到 Java 对象
  ③ 连接池 → 内置连接池,自动管理连接生命周期
  ④ 动态 SQL → 根据条件动态拼接 SQL,告别 SQL 拼接地狱

知识体系全景

MyBatis 学习路线(从浅到深):

  入门篇 ─────────────────────────────────────────────────────
  │  ① 概述与架构      → 理解 MyBatis 是什么、怎么工作的
  │  ② 快速入门        → 搭建第一个 MyBatis 项目
  │  ③ 核心配置文件    → mybatis-config.xml 全部配置项
  │  ④ Mapper 映射文件 → CRUD、参数传递、SQL 片段
  └──────────────────────────────────────────────────────────

  进阶篇 ─────────────────────────────────────────────────────
  │  ⑤ 动态 SQL        → if/choose/trim/foreach,告别拼接
  │  ⑥ 结果映射        → resultMap、关联查询、嵌套映射
  │  ⑦ 缓存机制        → 一级缓存、二级缓存、自定义缓存
  └──────────────────────────────────────────────────────────

  高级篇 ─────────────────────────────────────────────────────
  │  ⑧ 插件机制        → 拦截器原理、PageHelper 分页原理
  │  ⑨ Spring Boot 集成 → mybatis-spring-boot-starter
  │  ⑩ 高级特性        → TypeHandler、枚举、批量、存储过程
  └──────────────────────────────────────────────────────────

  源码篇 ─────────────────────────────────────────────────────
  │  ⑪ 源码分析        → SqlSession、Executor、MapperProxy
  │  ⑫ 最佳实践        → N+1 问题、性能优化、常见坑
  └──────────────────────────────────────────────────────────

速记口诀

MyBatis 核心四组件:
  SqlSessionFactory → 工厂造会话
  SqlSession        → 会话发 SQL
  Mapper            → 接口映射 SQL
  Executor          → 执行器干活

配置三件套:
  mybatis-config.xml  → 全局配置
  Mapper.xml          → SQL 映射
  Mapper.java         → 接口绑定

执行流程:
  接口调用 → 动态代理 → 找 SQL → 参数绑定 → 执行 → 结果映射 → 返回对象

MyBatis vs Hibernate vs JPA

维度MyBatisHibernate/JPA
类型半自动 ORM全自动 ORM
SQL 控制手写 SQL自动生成 SQL
学习成本
灵活性
性能调优直接优化 SQL优化 HQL/JPQL
适用场景复杂查询、报表常规 CRUD
动态 SQL强大较弱
缓存两级缓存三级缓存

文档导航

章节内容难度
01-概述与架构架构设计、核心组件、工作流程入门
02-快速入门环境搭建、第一个 Demo入门
03-核心配置文件配置项详解、别名、环境入门
04-Mapper映射文件CRUD、参数、SQL 片段入门
05-动态SQLif/choose/trim/foreach/bind进阶
06-结果映射resultMap、关联、嵌套进阶
07-缓存机制一级/二级缓存、自定义缓存进阶
08-插件机制拦截器、PageHelper 原理高级
09-SpringBoot集成Starter、自动配置、事务高级
10-高级特性TypeHandler、枚举、批量高级
11-源码分析核心组件源码解读源码
12-最佳实践性能优化、常见坑实战