mybatis實戰 - 透過現象看本質,手寫Mybatis

前面咱們分享了mybatis的核心組件和總體運行流程等設計的源碼,今天咱們按照以前分析的思路來嘗試手寫一下mybatis的核心運行流程實現。經過咱們手寫mybatis,更好的體會它的總體架構設計思想、核心運行流程和本質,從而提高咱們的架構能力。
java

總體運行流程數據庫

image.png

mybatis源碼的核心運行流程三大階段以前已經介紹得不少了,它的本質不會脫離一個ORM框架應該乾的事兒。那麼按照這個主體思路和mybatis源碼實現層面的一些好的設計,我手寫了一個精簡版的mybatis核心業務流程設計實現。精簡版mybatis要實現的目標是:從設計角度實現完成一個和mybatis運行流程相似的輕量級mybatis,從開發角度調用下面的代碼運行並輸出正確的結果:緩存

image.png

image.png

上面的測試調用的可不是mybatis的API完成的,而是今天mybatis精簡版完成的目標。它的總體骨架結構以下:session

image.png

datasource(數據源組件):負責封裝非池化的數據源信息、提供設計層面數據鏈接的構建和管理等;mybatis

configuration(配置組件):外部資源的解析、封裝、緩存和全局的配置對象的構建;架構

binding(綁定組件):負責實現Mapper動態代理的相關功能的加強、數據庫核心操做執行的映射和內部統一訪問路由封裝;app

executor(執行器組件):負責封裝mybatis執行的核心底層接口:執行器、Statement處理器、ResultSet處理器等;框架

reflection(反射工具):封裝參數映射、結果集映射和轉換的基礎反射能力;ide

session(會話組件):負責封裝數據庫會話生命週期內的各類行爲能力;工具

下面就來分塊一一過一下總體的源碼和實際運行效果

源碼設計實現

數據源組件源碼

image.png

image.png

image.png

image.png

image.png

image.png

配置組件源碼

image.png

image.png

image.png

image.png

image.png

image.png

image.png

綁定組件源碼

image.png

image.png

會話組件源碼

image.png

image.png

image.png

image.png

image.png

執行器組件源碼

image.png

image.png

image.png

image.png

image.png

image.png

反射工具源碼

image.png

源碼結構

image.png

運行結果

image.png

總結

以上就是整個精簡版mybatis的設計源碼,其實只要看過源碼或以前的文章,對以上的實現思路應該是盡在不言中才對。最好的源碼學習方式是動手。不少朋友看源碼都有大腦告訴本身明白,可是手仍是不會。因此動手是檢驗你的學習效果最好方式。推薦看了源碼後,動手把源碼的設計和你的理解結合,而後設定一個目標來實現一下,或許你能真正獲得的更多!OK此次源碼實戰暫告一段落,更多其它java相關技術的乾貨,請繼續關注!

相關文章
相關標籤/搜索