一、MyBatis核心解析:半ORM框架的底層真相
1. 本質與工作流
- 半ORM定義:
- 對象映射:通過
ResultMap
將ResultSet自動轉為Java對象(省去JDBC手動映射)。 - SQL控制:開發者需手動編寫SQL,框架不自動生成(與Hibernate核心區別)。
- 對象映射:通過
- 工作流四步:
- 解析
mybatis-config.xml
→ 構建SqlSessionFactory
- 通過
SqlSessionFactory
創建SqlSession
(含數據庫連接) - 動態代理生成
Mapper
接口實現類 → 執行XML/注解中SQL Executor
處理結果映射 → 返回Java對象或受影響行數。
- 解析
2. 核心組件職責
組件 | 作用 | 線程安全 |
---|---|---|
SqlSessionFactory | 全局單例,配置信息載入與Session生產 | ? |
SqlSession | 請求級別,執行CRUD/事務控制 | ?(需線程隔離) |
Executor | 調度StatementHandler /ResultSetHandler | ? |
MappedStatement | 封裝SQL/參數/結果集映射規則 | ? |
代碼示例:動態代理調用鏈路
UserMapper mapper = sqlSession.getMapper(UserMapper.class); // 動態代理實例 User user = mapper.findById(1); // → 觸發SqlSession.selectOne("findById",1)
二、MyBatis優勢:靈活性與性能的平衡術
1. 核心優勢詳解
-
SQL自由度高:
- 支持動態SQL標簽(
<if>
,<foreach>
),適應多條件查詢:<select id="searchUsers"
- 支持動態SQL標簽(