首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

MyBatis 學習筆記(一):框架原理深度剖析——從原生 JDBC 痛點到 MyBatis 核心架構

     編輯:Java 綜合教學

MyBatis 學習筆記(一):框架原理深度剖析——從原生 JDBC 痛點到 MyBatis 核心架構

MyBatis 作為 Apache 頂級項目,是優秀的半自動 ORM 持久層框架。它不像 Hibernate 那樣全自動映射,而是將 SQL 寫在 XML/註解中,保留對 SQL 完全控制權,同時解決原生 JDBC 的四大痛點。本文從 JDBC 痛點切入,推導 MyBatis 核心架構設計。

一、原生 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 + 列名屬性名自動匹配/自定義映射

二、MyBatis 核心架構圖解

MyBatis 核心架構圖

核心流程:配置解析 → SqlSessionFactory 構建 → SqlSession 獲取 → Executor 執行 → MappedStatement 匹配 → ParameterHandler 參數處理 → ResultSetHandler 結果映射 → 返回對象

三、核心組件職責

  • SqlSessionFactoryBuilder:從 XML/屬性/代碼構建 SqlSessionFactory,用完即丟
  • SqlSessionFactory:重量級工廠,單例,緩存 Configuration、MappedStatement、緩存、連接池
  • SqlSession:輕量級會話,非線程安全,核心入口:selectOne/List/Map、insert/update/delete、getMapper(Mapper.class)、commit/rollback/close
  • Executor:執行器接口(Simple/Reuse/Batch),負責 SQL 執行、緩存維護、事務管理
  • MappedStatement:封裝一條 SQL 的所有元數據(id、sql、parameterType、resultType/resultMap、緩存配置等)
  • ParameterHandler / ResultSetHandler:參數綁定與結果映射的具體實現
  • TypeHandler:JDBC 類型 ↔ Java 類型雙向轉換(內置常用,可自定義)

四、代碼下載與參考資源

五、總結

MyBatis 通過外部化 SQL、自動化參數綁定、自動化結果映射、連接池管理四大核心能力,徹底解決 JDBC 痛點,同時保留 SQL 完全控制權。理解其配置→工廠→會話→執行器→映射語句→結果處理核心鏈路,是深入掌握插件機制、緩存原理、動態 SQL、分頁插件等進階特性的基石。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved