mybatis的實現原理


一、mybatis簡介:

MyBatis 是一款優秀的持久層框架,它支持定制化 SQL、存儲過程以及高級映射。MyBatis 避免了幾乎所有的 JDBC 代碼和手動設置參數以及獲取結果集。MyBatis 可以使用簡單的 XML 或注解來配置和映射原生信息,將接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java對象)映射成數據庫中的記錄。本文將通過debug的方式來了解其工作原理。

二、mybatis的工作流程與原理

1:讀取mybatis全局配置文件

將定義好的mybatis全局配置文件進行讀取,並包裝稱為一個InputStream對象。這個比較簡單,就不詳細分析

2:解析配置文件(mybatis-config.xml)

由SqlSessionFactoryBuilder類的bulid方法驅動,對包裝好的XML文件進行解析。很容易看到,其具體的解析任務是交給XMLConfigBuilder對象完成,並將讀取的數據存入Configuration的對象中

Configuration作為解析配置文件過程中,最重要的一個類,它的作用主要如下:
a.讀入配置文件
b.提供單例,為后續創建SessionFactory服務提供配置參數
c. 初始化配置信息

Mybatis的幾乎所有配置文件信息都是存儲在由XMLConfigBuilder構建的Configuration對象中。

3:SqlSessionFactory對象的創建

SqlSessionFactory對象由DefaultSessionFactory根據Configuration的信息去創建。

4:SqlSession的對象的創建

創建Executor對象,這是SqlSession對象去訪問數據庫的執行器,每一個SqlSession對象都維持着這樣一個Executor。到此SqlSession對象創建完成,可以開始對數據庫進行訪問了。

5:SqlSession的執行過程

采用了動態代理技術,代理類的具體操作封裝在invoke()方法之中,由此可見,SqlSession對結果進行了緩存,並封裝在一個HashMap之中,其中key為sql語句,value為查詢結果。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM