為什么看原始碼
- 提升技術功底 java基礎
- 深度掌握技術框架
- 快速定位線上問題
- 面試必問
- 技術追求
原則是什么
- 定焦原則: 抓主線(抓住一個核心流程去分析,不要漫無目的的去看源代碼)
- 宏觀原則: 站在上帝視角,先脈絡后枝葉 (切忌試圖搞清楚每一行代碼)
有哪些方法呢
- 先會使用,了解框架的設計思想和功能架構
- 抓主線,多嘗試靜態看代碼
- 在原始碼中寫注釋&畫流程圖
- 整合總結
技巧有哪些
- 斷點(觀察呼叫堆疊,利用條件斷點,運算式)
- 反調 (Find Usages)
- 根據介面方法找到具體實作 AoP AopProxyFactory
- 猜測類名方法名(比如doGetBean,doCreateBean)
- 看控制臺日志
應該用什么心態讀原始碼
- 克服對原始碼的恐懼心理
- 靜下心讀原始碼
傳統 JDBC 的弊端:
-
jdbc 底層沒有用連接池、操作資料庫需要頻繁的創建和關聯鏈接,消耗很大的資源
-
寫原生的 jdbc 代碼在 java 中,一旦我們要修改 sql 的話,java 需要整體編譯,不利于系統維護
-
使用 PreparedStatement 預編譯的話對變數進行設定 123 數字,這樣的序號不利于維護
-
回傳 result 結果集也需要硬編碼,
mybatis 核心概念
Configuration 、 SqlSessionFactory 、 Session 、 Executor 、 MappedStatement 、StatementHandler、ResultSetHandler
| 名稱 | 意義 |
|---|---|
| Configuration | 管理 mysql-config.xml 全域配置關系類 |
| SqlSessionFactory | Session 管理工廠介面 |
| Session | SqlSession 是一個面向用戶(程式員)的介面,SqlSession 中提供了很多操作資料庫的方法 |
| Executor | 執行器是一個介面(基本執行器、快取執行器)作用:SqlSession 內部通過執行器操作資料庫 |
| MappedStatement | 底層封裝物件作用:對操作資料庫存盤封裝,包括 sql 陳述句、輸入輸出引數 |
| StatementHandler | 具體操作資料庫相關的 handler 介面 |
| ResultSetHandler | 具體操作資料庫回傳結果的 handler 介面 |

原始碼程序:

原始碼編譯與下載
https://github.com/mybatis/mybatis-3
https://github.com/mybatis/parent(依賴)

可以直接idea匯入 也可以直接下載為zip包(推薦這種),

Mybatis原始碼襲來parent工程,需要先編譯parent工程在編譯mybatis,具體如下
解決parent依賴問題:
在構建的程序中會出現找不到pom.xml中依賴的父模塊mybatis-parent
我們需要將paren工程克隆到本地目錄中:git clone https://github.com/mybatis/parent.git ,然后先進入parent工程下進行mvn clean install 將parent工程依賴的包下載下來、并保證parent工程編譯通過,這步不會出現問題,在編譯的輸出資訊中我們會看到parent工程的版本號,如圖所示:

pom.xml檔案parent依賴的version標簽處,如下文,
接下來修改mybatis工程的pom.xml檔案中標識parent依賴的地方:
org.mybatis
mybatis-parent
28-SNAPSHOT
…/parent/pom.xml
告訴我們部分插件沒有指定的相應的版本號,出于工程的穩定性考慮需要對使用的插件指定其版本號,并給出了合適的版本號,如圖紅色方框中的文字,我們只要在mybatisg工程的pom.xml檔案中找到相對應的插件處添加$NUM 標簽即可, $NUM代表具體的版本號,到這我們再執行mvn clean install 指令就可以將mybatis工程構建成功了,
最后
對本文有不同理解的,或者有看法的歡迎在評論區評論,另外我本人建了一個群,作為一個學習平臺,有什么問題可以在群里提問,同時還可以領取一份整理好的大廠面經,點擊此處進群,暗號CSDN,




上述資料已經整理好,需要的可以點擊此處免費領取,暗號CSDN
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/218826.html
標籤:其他
上一篇:Verilog初學 16位計數器
