MyBatis 作為 Apache 頂級項目,是優秀的半自動 ORM 持久層框架。它不像 Hibernate 那樣全自動映射,而是將 SQL 寫在 XML/註解中,保留對 SQL 完全控制權,同時解決原生 JDBC 的四大痛點。本文從 JDBC 痛點切入,推導 MyBatis 核心架構設計。
| 痛點 | 描述 | MyBatis 解決方案 |
|---|---|---|
| 1. 連接管理 | 用時創建、用完關閉,頻繁開關連接,性能差 | 數據源連接池(內置/整合 DBCP/HikariCP),生命周期管理 |
| 2. SQL 硬編碼 | SQL 寫在 Java 代碼中,修改需重新編譯打包 | XML 映射文件外部化,SQL 變更無需重編譯 Java |
| 3. 參數綁定硬編碼 | ps.setString(1, "值") 位置與類型硬編碼 | 參數映射自動化:#{}/{} 佔位符 + parameterType/TypeHandler 自動綁定 |
| 4. 結果集映射硬編碼 | rs.getString("column") 字段名硬編碼 | 結果映射自動化:resultType/resultMap + 列名屬性名自動匹配/自定義映射 |

核心流程:配置解析 → SqlSessionFactory 構建 → SqlSession 獲取 → Executor 執行 → MappedStatement 匹配 → ParameterHandler 參數處理 → ResultSetHandler 結果映射 → 返回對象
selectOne/List/Map、insert/update/delete、getMapper(Mapper.class)、commit/rollback/closeMyBatis 通過外部化 SQL、自動化參數綁定、自動化結果映射、連接池管理四大核心能力,徹底解決 JDBC 痛點,同時保留 SQL 完全控制權。理解其配置→工廠→會話→執行器→映射語句→結果處理核心鏈路,是深入掌握插件機制、緩存原理、動態 SQL、分頁插件等進階特性的基石。