11 — MyBatis索引
定位: 半自动 ORM 框架 — SQL 与 Java 代码分离,灵活控制 + 自动映射 面试高频度: ⭐⭐⭐⭐
一、知识全景图
┌─────────────────────────────────────────────────────────────┐
│ MyBatis 架构全景 │
│ │
│ ┌─────────── 启动流程 ────────────────────────────┐ │
│ │ mybatis-config.xml → SqlSessionFactoryBuilder │ │
│ │ → SqlSessionFactory → SqlSession │ │
│ └──────────────────────────────────────────────────┘ │
│ │
│ ┌─────────── Mapper 层 ────────────────────────────┐ │
│ │ Mapper 接口 + Mapper.xml / 注解 │ │
│ │ JDK 动态代理 → MapperProxy → SqlSession │ │
│ │ #{} vs ${}: 预编译 vs 字符串拼接 │ │
│ └──────────────────────────────────────────────────┘ │
│ │
│ ┌─────────── 核心能力 ────────────────────────────┐ │
│ │ 动态 SQL (if/choose/foreach/where/set) │ │
│ │ 关联查询 (association/collection) │ │
│ │ 缓存: 一级(SqlSession) → 二级(SqlSessionFactory) │ │
│ └──────────────────────────────────────────────────┘ │
│ │
│ MyBatis vs JDBC: 减少 80% 样板代码 │
│ MyBatis vs Hibernate: SQL 在手,性能可控 │
└─────────────────────────────────────────────────────────────┘二、子专题导航
| # | 主题 | 面试频率 | 核心内容 |
|---|---|---|---|
| **核心配置与SqlSession** | 核心配置与SqlSession | ⭐⭐⭐ | 全局配置、SqlSessionFactory 构建、生命周期 |
| **Mapper映射原理** | Mapper映射原理 | ⭐⭐⭐⭐ | 动态代理实现、#{} 预编译、ResultMap |
| **动态SQL与关联查询** | 动态SQL与关联查询 | ⭐⭐⭐⭐ | if/foreach/where、association/collection、延迟加载 |
| **缓存机制** | 缓存机制 | ⭐⭐⭐ | 一级缓存/二级缓存、缓存失效场景、自定义缓存 |
📚 相关文件
- **SpringBoot与Web开发** — MyBatis-Spring 整合
- **Java文库设计文档** — 返回总纲