|
-- 會員 / 註冊 --
|
|
|
|
通用源碼閱讀指導書(MyBatis源碼詳解) ( 簡體 字) |
作者:易哥|責編:李冰 | 類別:1. -> 程式設計 -> 綜合 |
譯者: |
出版社:電子工業 | 3dWoo書號: 53112 詢問書籍請說出此書號!【缺書】 NT售價: 500 元 |
出版日:8/1/2020 |
頁數:386 |
光碟數:0 |
|
站長推薦: |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787121391460 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言: |
內容簡介:本書以開源軟件MyBatis的源碼為例,講述程序源碼閱讀的流程、方法、技巧。本書先介紹MyBatis的發展背景與使用方法讓讀者對MyBatis建立概括性的認識,繼而逐步深入剖析MyBatis的源碼。并在剖析MyBatis源碼的過程講述源碼中所涉及到的編程語言知識、設計模式、架構技巧。最終使得讀者在詳細了解MyBatis源碼的同時掌握源碼閱讀的基本能力。 |
目錄:第1篇 背景介紹 第1章 源碼閱讀 2 1.1 源碼閱讀的意義 2 1.2 源碼閱讀的方法 2 1.3 開源軟體 3 1.4 MyBatis源碼 4 1.5 本書結構 5 1.5.1 背景知識 5 1.5.2 文件的指代 5 1.5.3 方法的指代 8 第2章 MyBatis概述 10 2.1 背景介紹 10 2.1.1 傳統資料庫連接 10 2.1.2 ORM框架 11 2.1.3 MyBatis的特點 12 2.2 快速上手 12 2.2.1 MyBatis包的引入 14 2.2.2 MyBatis的簡單配置 15 2.2.3 基於MyBatis的資料庫操作 16 2.3 MyBatis的核心功能分析 17 第3章 MyBatis運行初探 20 3.1 初始化階段追蹤 23 3.1.1 靜態代碼塊的執行 23 3.1.2 獲取InputStream 24 3.1.3 配置資訊讀取 25 3.1.4 總結 27 3.2 資料讀寫階段追蹤 27 3.2.1 獲得SqlSession 27 3.2.2 映射介面檔與映射檔的綁定 28 3.2.3 映射介面的代理 28 3.2.4 SQL語句的查找 31 3.2.5 查詢結果緩存 31 3.2.6 資料庫查詢 33 3.2.7 處理結果集 36 3.2.8 總結 39 第4章 MyBatis源碼結構概述 40 4.1 包結構 40 4.2 分組結構 40 第2篇 基礎功能包源碼閱讀 第5章 exceptions包 44 5.1 背景知識 44 5.1.1 Java的異常 44 5.1.2 序列化與反序列化 45 5.2 Exception類 46 5.3 ExceptionFactory類 47 第6章 reflection包 48 6.1 背景知識 48 6.1.1 裝飾器模式 48 6.1.2 反射 50 6.1.3 Type介面及其子類 54 6.2 物件工廠子包 55 6.3 執行器子包 57 6.4 屬性子包 59 6.5 對象包裝器子包 61 6.6 反射核心類 62 6.7 反射包裝類 65 6.8 異常拆包工具 65 6.9 參數名解析器 68 6.10 泛型解析器 69 第7章 annotations包與lang包 76 7.1 Java注解詳解 76 7.2 Param注解分析 78 第8章 type包 81 8.1 範本模式 82 8.2 類型處理器 83 8.2.1 類型處理器的基類與實現類 83 8.2.2 TypeReference類 85 8.3 類型註冊表 86 第9章 io包 89 9.1 背景知識 89 9.1.1 單例模式 89 9.1.2 代理模式 89 9.1.3 靜態代理 90 9.1.4 VFS 92 9.2 VFS實現類 92 9.2.1 DefaultVFS類 94 9.2.2 JBoss6VFS類 94 9.3 類檔的載入 96 9.4 ResolverUtil類 97 第10章 logging包 100 10.1 背景知識 100 10.1.1 適配器模式 100 10.1.2 日誌框架與日誌級別 102 10.1.3 基於反射的動態代理 103 10.2 Log介面 105 10.3 Log介面的實現類 107 10.4 LogFactory 108 10.5 JDBC日誌列印 109 第11章 parsing包 113 11.1 背景知識 113 11.1.1 XML文件 113 11.1.2 XPath 115 11.2 XML解析 116 11.3 文檔解析中的變數替換 118 第3篇 配置解析包源碼閱讀 第12章 配置解析概述 124 第13章 binding包 128 13.1 資料庫操作的接入 128 13.1.1 資料庫操作的方法化 129 13.1.2 資料庫操作方法的接入 133 13.2 抽象方法與資料庫操作節點的關聯 134 13.3 資料庫操作接入總結 136 13.3.1 初始化階段 136 13.3.2 資料讀寫階段 137 13.4 MyBatis與Spring、Spring Boot的整合 137 第14章 builder包 139 14.1 建造者模式 139 14.2 建造者基類與工具類 142 14.3 SqlSourceBuilder類與StaticSqlSource類 143 14.4 CacheRefResolver類和ResultMapResolver類 145 14.4.1 CacheRefResolver類 145 14.4.2 ResultMapResolver類 146 14.5 ParameterExpression類 148 14.6 XML文件解析 149 14.6.1 XML檔的聲明解析 150 14.6.2 設定檔解析 151 14.6.3 資料庫動作陳述式解析 153 14.6.4 Statement解析 155 14.6.5 引用解析 157 14.7 注解映射的解析 159 14.7.1 注解映射的使用 159 14.7.2 注解映射解析的觸發 160 14.7.3 直接注解映射的解析 164 14.7.4 間接注解映射的解析 164 第15章 mapping包 169 15.1 SQL語句處理功能 169 15.1.1 MappedStatement類 169 15.1.2 SqlSource類 170 15.1.3 BoundSql 171 15.2 輸出結果處理功能 171 15.2.1 ResultMap類 172 15.2.2 ResultMapping類 173 15.2.3 Discriminator 174 15.3 輸入參數處理功能 176 15.4 多資料庫種類處理功能 176 15.5 其他功能 178 第16章 scripting包 179 16.1 OGNL 179 16.2 語言驅動介面及語言驅動註冊表 183 16.3 SQL節點樹的組建 186 16.4 SQL節點樹的解析 189 16.4.1 OGNL輔助類 189 16.4.2 運算式求值器 193 16.4.3 動態上下文 194 16.4.4 SQL節點及其解析 196 16.5 再論SqlSource 202 16.5.1 SqlSource的生成 202 16.5.2 DynamicSqlSource的轉化 205 16.5.3 RawSqlSource的轉化 206 16.5.4 SqlSource介面的實現類總結 207 第17章 datasource包 208 17.1 背景知識 208 17.1.1 java.sql包和javax.sql包 208 17.1.2 DriverManager 209 17.1.3 DataSource 209 17.1.4 Connection 210 17.1.5 Statement 211 17.2 資料來源工廠介面 211 17.3 JNDI資料來源工廠 213 17.4 非池化資料來源及工廠 214 17.4.1 非池化資料來源工廠 214 17.4.2 非池化資料來源 216 17.5 池化資料來源 218 17.5.1 池化資料來源類的屬性 218 17.5.2 池化連接的給出與收回 220 17.5.3 池化連接 228 17.6 論資料來源工廠 229 第4篇 核心操作包源碼閱讀 第18章 jdbc包 232 18.1 AbstractSQL類與SQL類 232 18.1.1 SafeAppendable內部類 232 18.1.2 SQLStatement內部類 233 18.1.3 AbstractSQL類 235 18.1.4 SQL類 236 18.2 SqlRunner類 237 18.3 ScriptRunner類 240 18.4 jdbc包的獨立性 241 第19章 cache包 243 19.1 背景知識 243 19.1.1 Java對象的引用級別 243 19.1.2 ReferenceQueue類 244 19.2 cache包結構與Cache介面 247 19.3 緩存鍵 248 19.3.1 緩存鍵的原理 248 19.3.2 緩存鍵的生成 251 19.4 緩存的實現類 252 19.5 緩存裝飾器 252 19.5.1 同步裝飾器 253 19.5.2 日誌裝飾器 253 19.5.3 清理裝飾器 254 19.5.4 阻塞裝飾器 259 19.5.5 定時清理裝飾器 262 19.5.6 序列化裝飾器 263 19.6 緩存的組建 264 19.7 事務緩存 267 19.8 MyBatis緩存機制 271 19.8.1 一級緩存 271 19.8.2 二級緩存 274 19.8.3 兩級緩存機制 277 第20章 transaction包 279 20.1 事務概述 279 20.2 事務介面及工廠 280 20.3 JDBC事務 282 20.4 容器事務 283 第21章 cursor包 284 21.1 Iterable介面與Iterator介面 284 21.2 MyBatis中游標的使用 285 21.3 游標介面 285 21.4 預設游標 286 21.4.1 CursorStatus內部類 287 21.4.2 ObjectWrapperResultHandler內部類 287 21.4.3 CursorIterator內部類 288 21.4.4 DefaultCursor外部類 289 第22章 executor包 293 22.1 背景知識 293 22.1.1 基於cglib的動態代理 293 22.1.2 javassist框架的使用 295 22.1.3 序列化與反序列化中的方法 296 22.1.4 ThreadLocal 302 22.1.5 存儲過程 305 22.1.6 Statement及其子介面 306 22.2 主鍵自增功能 308 22.2.1 主鍵自增的配置與生效 308 22.2.2 Jdbc3KeyGenerator類 310 22.2.3 SelectKeyGenerator類 312 22.3 懶載入功能 316 22.3.1 懶載入功能的使用 316 22.3.2 懶載入功能的實現 318 22.3.3 懶載入功能對序列化和反序列化的支援 325 22.4 語句處理功能 329 22.4.1 MyBatis對多語句類型的支援 329 22.4.2 MyBatis的語句處理功能 331 22.5 參數處理功能 333 22.6 結果處理功能 334 22.7 結果集處理功能 336 22.7.1 MyBatis中多結果集的處理 337 22.7.2 結果集封裝類 340 22.7.3 結果集處理器 341 22.8 執行器 347 22.8.1 執行器介面 348 22.8.2 執行器基類與實現類 348 22.9 錯誤上下文 352 第23章 session包 355 23.1 SqlSession及其相關類 355 23.1.1 SqlSession的生成鏈 356 23.1.2 DefaultSqlSession類 357 23.1.3 SqlSessionManager類 358 23.2 Configuration類 361 23.3 其他類 364 第24章 plugin包 366 24.1 責任鏈模式 366 24.2 MyBatis外掛程式開發 368 24.3 MyBatis攔截器平臺 370 24.4 MyBatis攔截器鏈與攔截點 373 第5篇 總結與展望 第25章 源碼閱讀總結 378 25.1 前期準備 378 25.1.1 工具準備 378 25.1.2 項目選擇 378 25.1.3 專案使用 379 25.2 項目初探 379 25.3 源碼閱讀 380 25.3.1 模組分析 380 25.3.2 模組歸類 380 25.3.3 自底向上 380 25.3.4 合理猜測 381 25.3.5 類比閱讀 381 25.3.6 善於匯總 381 25.3.7 網格閱讀 382 第26章 優秀開源專案推薦 383 26.1 Guava 383 26.2 Tomcat 384 26.3 Redis 384 26.4 Dubbo 385 26.5 React 385
|
序: |
|