前面咱們分享了mybatis的核心組件和總體運行流程等設計的源碼,今天咱們按照以前分析的思路來嘗試手寫一下mybatis的核心運行流程實現。經過咱們手寫mybatis,更好的體會它的總體架構設計思想、核心運行流程和本質,從而提高咱們的架構能力。
java
總體運行流程數據庫
mybatis源碼的核心運行流程三大階段以前已經介紹得不少了,它的本質不會脫離一個ORM框架應該乾的事兒。那麼按照這個主體思路和mybatis源碼實現層面的一些好的設計,我手寫了一個精簡版的mybatis核心業務流程設計實現。精簡版mybatis要實現的目標是:從設計角度實現完成一個和mybatis運行流程相似的輕量級mybatis,從開發角度調用下面的代碼運行並輸出正確的結果:緩存
上面的測試調用的可不是mybatis的API完成的,而是今天mybatis精簡版完成的目標。它的總體骨架結構以下:session
datasource(數據源組件):負責封裝非池化的數據源信息、提供設計層面數據鏈接的構建和管理等;mybatis
configuration(配置組件):外部資源的解析、封裝、緩存和全局的配置對象的構建;架構
binding(綁定組件):負責實現Mapper動態代理的相關功能的加強、數據庫核心操做執行的映射和內部統一訪問路由封裝;app
executor(執行器組件):負責封裝mybatis執行的核心底層接口:執行器、Statement處理器、ResultSet處理器等;框架
reflection(反射工具):封裝參數映射、結果集映射和轉換的基礎反射能力;ide
session(會話組件):負責封裝數據庫會話生命週期內的各類行爲能力;工具
下面就來分塊一一過一下總體的源碼和實際運行效果
源碼設計實現
數據源組件源碼
配置組件源碼
綁定組件源碼
會話組件源碼
執行器組件源碼
反射工具源碼
源碼結構
運行結果
總結
以上就是整個精簡版mybatis的設計源碼,其實只要看過源碼或以前的文章,對以上的實現思路應該是盡在不言中才對。最好的源碼學習方式是動手。不少朋友看源碼都有大腦告訴本身明白,可是手仍是不會。因此動手是檢驗你的學習效果最好方式。推薦看了源碼後,動手把源碼的設計和你的理解結合,而後設定一個目標來實現一下,或許你能真正獲得的更多!OK此次源碼實戰暫告一段落,更多其它java相關技術的乾貨,請繼續關注!