前言面試
以前和阿里的一個面試官交流中,他講到對於性能要求高,需求變化多的互聯網項目來講,sql直接優化上,mybatis要比hibernate方便不少,用在sql優化上的開發時間太長,阿里巴巴的持久層拋棄Hibernate,採用了MyBatis框架。sql
因而趁熱打鐵,研究了一下MyBatis。MyBatis框架的核心功能其實並不難,無非就是動態代理和jdbc的操做,難的是寫出來可擴展,高內聚,低耦合的規範代碼。數據庫
一、MyBatis框架流程簡介編程
在手寫本身的Mybatis框架以前,咱們先來了解一下Mybatis,它的源碼中使用了大量的設計模式,閱讀源碼並觀察設計模式在其中的應用,纔可以更深刻的理解源碼。設計模式
二、梳理MyBatis的設計思路緩存
建立SqlSessionFactory實例session
實例化過程當中,加載配置文件建立configuration對象mybatis
經過factory建立SqlSessionapp
經過SqlSession獲取mapper接口動態代理框架
動態代理回調sqlsession中某查詢方法
SqlSession將查詢方法轉發給Executor
Executor基於JDBC訪問數據庫獲取數據
Executor經過反射將數據轉換成POJO並返回;給SqlSession
將數據返回給調用者
三、MyBatis三大核心階段
初始化階段:讀取XML配置文件和註解中的配置信息,建立解析對象,並完成各個模塊的初始化工做。就是把咱們的配置文件加載到內存裏面去。在sqlSession初始化的時候加載到內存中去的。
代理階段:封裝iBatis的編程模型,使用mapper接口開發的初始化工做。
數據讀寫階段:經過SqlSession完成SQL的解析,參數的映射,SQL的執行,結果的反射解析過程。
在這免費分享一個手寫MyBatis框架視頻教學,從源碼講解手寫MyBatis框架,學習源碼。
四、深刻解析Mybatis
爲了能讓你們快速掌握MyBatis,升職加薪、跳槽大廠的時候更有底氣。在這分享一個MyBatis源碼學習文檔,這份文檔從MyBatis源碼的角度分析Mapper綁定過程、SqlSession操做數據庫原理、插件實現原理等
因爲篇幅限制,小編這裏只將此實戰文檔的所含內容所有展示出來了,須要獲取完整文檔用以學習的朋友們能夠點擊連接免費領取:https://shimo.im/docs/TC9Jq63Tp6HvTXdg
共7個部分
第一部分:MyBatis 入門
MyBatis是什麼、爲何要使用MyBatis、如何使用MyBatis、小結
第二部分:配置文件解析過程
配置文件解析過程分析,小結
第三部分:映射文件解析過程
映射文件解析解析入口、解析映射文件、Mapper接口綁定過程分析、處理未完成解析的節點、小結
第四部分:SQL執行流程
第五部分:內置數據源
內置數據源初始化過程、UnpooledDataSource、PooledDataSource、小結
第六部分:緩存機制
緩存類介紹、CacheKey、一級緩存、二級緩存、小結
第七部分:插件機制
插件機制原理、實現一個分頁插件、小結
MyBatis源碼筆記全目錄