11、mybatis的功能架构分析
1、Mybatis功能架構
1)API接口層:提供給外部使用的接口API,開發人員通過這些本地API來操縱數據庫。接口層一接收到調用請求就會調用數據處理層來完成具體的數據處理。
2)數據處理層:負責具體的SQL查找、SQL解析、SQL執行和執行結果映射處理等。它主要的目的是根據調用的請求完成一次數據庫操作。
3)基礎支撐層:負責最基礎的功能支撐,包括連接管理、事務管理、配置加載和緩存處理,這些都是共用的東西,將他們抽取出來作為最基礎的組件。為上層的數據處理層提供最基礎的支撐。
2、Mybatis基本工作原理及工作流程圖
3、Mybatis的工作原理文本描述
3、1 創建SqlSessionFactory
框架初始化時,全局配置文件和sql映射文件中的內容會經過解析,最終添加在一個Configuration對象中,返回一個包含了Configuration的DefaultSqlSession對象。Mapper.xml中的增刪改查標簽會被解析,每一個增刪改查標簽都會被解析并封裝到一個MappedStatement中,此時會根據配置信息創建SqlSessionFactory;
3、2? 創建SqlSession
根據SqlSessionFactory 創建 SqlSession;
3、3 獲取接口的代理對象
通過 SqlSession 對象獲取接口的代理對象,調用getMapper方法時,使用MapperProxyFactory創建一個MapperProxy的代理對象,代理對象里邊包含DeafaultSqlSession(Executor)。
3、4 進行具體的數據操作
通過Executor 進行具體的sql預編譯、參數類型映射和處理結果集操作。具體為:
StatementHandler 處理sql語句預編譯,設置參數;
Parameterhandler 設置預編譯參數用的ResultHandler,處理結果集;
TypeHandler 在整個過程中進行數據庫類型和javaBean 類型的映射;
4、Mybatis的核心組件功能分析
| Configuration | ?MyBatis所有的配置信息都保存在Configuration對象之中,配置文件中的大部分配置都會存儲到該類中 |
| SqlSession | 作為MyBatis工作的主要頂層API,表示和數據庫交互時的會話,完成必要數據庫增刪改查功能 |
| Executor | MyBatis執行器,是MyBatis 調度的核心,負責SQL語句的生成和查詢緩存的維護 |
| StatementHandler | 封裝了JDBC Statement操作,負責對JDBC statement 的操作,如設置參數等 |
| ParameterHandler | ?負責對用戶傳遞的參數轉換成JDBC Statement 所對應的數據類型,處理預編譯 |
| ResultSetHandler | 負責將JDBC返回的ResultSet結果集對象轉換成List類型的集合 |
| TypeHandler? | 負責java數據類型和jdbc數據類型(也可以說是數據表列類型)之間的映射和轉換 |
| MappedStatement? | MappedStatement維護一條<select|update|delete|insert>節點的封裝 |
| SqlSource | 負責根據用戶傳遞的parameterObject,動態地生成SQL語句,將信息封裝到BoundSql對象中,并返回 |
| BoundSql | 表示動態生成的SQL語句以及相應的參數信息 |
接下來偷個懶,直接引用一位仁兄的分析過程
Mybatis(四):MyBatis核心組件介紹原理解析和源碼解讀
總結
以上是生活随笔為你收集整理的11、mybatis的功能架构分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 讯飞开放式骨传导耳机 iFLYBUDS
- 下一篇: 大众汽车宣布明年开始将在挪威取缔燃油车,