手寫MyBatis,純手工打造開源框架(第一篇:風雲再起)

原文鏈接:https://412887952-qq-com.iteye.com/admin/blogs/2443488

說明

MyBatis版本:3.5.1

 

相關歷史文章(閱讀本文之前,您可能需要先看下之前的系列👇

Spring Boot MyBatis最全教程:你值得擁有

MyBatis能脫離Spring嗎

一圖縱覽MyBatis的工作原理

從源碼看MyBatis,竟如此簡單

MyBatis的Mapper是什麼`垃圾` 

 

前言

通過前面幾篇文章的介紹,想必大家對於MyBatis有了一個比較深的認知了,分析了原理之後,那麼手寫一個MyBatis就很簡單了,當然要寫成官方性能這麼高的,是需要比較深的技術功底了。

編碼核心對象分析

       根據前面的文章,我們先分析一下要自己手寫一個MyBatis幾個不可少的核心對象:

(1)SqlSessionFactoryBuilder:用於構建SqlSessionFactory的。

(2)SqlSessionFactory : 用於管理SqlSession的。

(3)SqlSession:讓開發人員方便操作數據庫的。

(4)Executor:真正和數據庫進行交互的。

(5)MapperProxy:mapper接口的代理類。

(6)MapperStatement:用於保存xml配置的mapper信息。

 

編碼核心流程分析

       爲了更好的理解,我們將整個流程分爲3個階段:

(1)初始化階段:解析配置文件(mybatis-config.xml)構建SqlSessionFactory。

(2)代理階段:封裝MyBatis的編程模型,使用mapper接口開發。

(3)數據讀寫階段:通過SqlSession完成SQL的解析,參數的映射,SQL的執行。

(1)如何解析配置文件?

       .propeties文件的解析:可以使用Properties進行解析。

       .xml文件的解析:可以使用JDom、 Dom4J、SAX

(2)MapperProxy

       這個通過上面分析的話,就很簡單了,只要使用動態代理構建一個代理類就可以了。

(3)數據庫讀寫

       數據庫讀寫的話,這個就是原生的jdbc進行執行SQL語句,在返回的數據中使用Java的反射技術組裝成一個實體類對象即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章