前言
面向對像程序設計是企業級開發常用的設計方式,在實踐中常用的編程語言大多都是面向對像的編程語言。而在實際生產環境中常用的數據庫產品,如MySQL、Oracle等,都是關繫型數據庫。雖然NoSQL數據庫在最近一段時間有飛速的發展,但是關繫型數據庫憑借多年的發展和技術積累,依然占據著市場的主導地位。
MyBatis作為一個優秀的Java持久化框架,可以幫助程序員完成ORM映射、查詢緩存等常用功能。MyBatis以其高性能、易優化、易維護、可擴展等優點,受到越來越多的開發人員的青睞,也有越來越多的設計人員開始將MyBatis作為其首選的Java持久化框架。
MyBatis 的前身是Apache的一個開源項目—iBatis,2010年iBatis項目由Apache基金會遷移到了Google Code,並正式更名為MyBatis。2013年11月,MyBatis遷移到Github。目前,越來越多的互聯網公司開始使用MyBatis,其中包括網易、搜狗、華為等,依賴MyBatis搭建的創業項目更是數不勝數。
MyBatis的亮點有很多,比如靈活的動態SQL語句、強大的ORM映射功能等,同時還提供了二級緩存等常用功能。MyBatis同時支持XML和注解兩種配置方式,幫助程序員屏蔽了近乎所有的JDBC代碼、參數設置、結果集處理等工作,極大地提升了開發效率。
MyBatis中有很多令人稱贊的功能和優秀的設計,但至今還沒有一本書籍深入剖析MyBatis的內部設計和實現細節,希望本書的出現可以填補此項空白。
本書以MyBatis 3.4為基礎,針對MyBatis的架構設計和實現細節進行了詳細分析,其中穿插介紹了MyBatis源碼中涉及的基礎知識、設計模式以及筆者自己在實踐中的思考。除此之外,還分析了MyBatis插件的應用場景和實現原理,介紹了MyBatis與Spring集成開發的示例和原理,以及一些實踐中的小技巧和小工具的使用。
如何閱讀本書
由於篇幅限制,本書並沒有詳細介紹Java的基礎知識,但為了便於讀者理解MyBatis的設計思想和實現細節,筆者介紹了一些必需且重要的基礎內容,例如涉及的多種設計模式。
本書共4章,它們互相之間的聯繫並不是很強,讀者可以從頭開始閱讀,也可以選擇自己感興趣的章節進行學習。
第1章是MyBatis的快速入門,其中介紹了MyBatis出現的背景、與其他Java持久化框架的比較以及MyBatis的入門示例。之後介紹了MyBatis的整體架構,並簡述了MyBatis中各個模塊的基本功能。
第2章介紹MyBatis基礎支持層中各個模塊的功能,其中包括數據源模塊、事務管理模塊、緩存模塊、binding模塊、反射模塊、類型轉換模塊、日志模塊、資源加載模塊和解析器模塊。這些模塊相對獨立,讀者在實踐中如果遇到類似的需求,可以直接參考MyBatis的實現。
第3章介紹MyBatis核心處理層的主要功能,其中包括MyBatis初始化過程、動態SQL的解析過程、結果集的映射原理、SQL語句的參數綁定、KeyGenerator、StatementHandler以及Executor等組件的實現原理。同時,還介紹了MyBatis接口層的設計原理。
第4章介紹MyBatis插件的編寫和配置方式、運行原理以及常見的應用場景,並分析了筆者在實踐中使用的分頁插件和分表插件的具體實現。之後,介紹了MyBatis與Spring集成開發的相關內容,搭建了Spring 4.3、MyBatis 3.4、Spring MVC的集成開發環境,剖析了MyBatis-Spring中核心組件的實現原理。最後介紹了一些在使用MyBatis時用到的小技巧和一些小工具的使用方法。
在本書中,除了介紹MyBatis的實現細節,還介紹了其中涉及的設計模式,可以幫助讀者了解MyBatis源碼背後的設計思想。
如果讀者在閱讀本書的過程中,發現任何不妥之處,請將您寶貴的意見和建議發送到郵箱xxxlxy2008@163.com,也歡迎讀者朋友通過此郵箱與筆者進行交流。
致謝
感謝電子工業出版社博文視點的陳曉猛老師,是您的辛勤工作讓本書的出版成為可能。同時還要感謝許多我不知道名字的幕後工作人員為本書付出的努力。
感謝朱碧穎、逄志強、楊俊靈、李全纔、曾君實等朋友在百忙之中抽出時間對本書進行審閱和推薦。感謝米秀明、曾天寧、葛彬、楊杉、文靜宇、劉浩、楊鵬林、路恆、籐少廣等同事,幫助我解決工作中的困難。
這裡特別感謝王魯老師,在軟件架構、設計模式等方面對我的指導。
感謝馮玉玉、李成偉,是你們讓寫作的過程變得妙趣橫生,是你們讓我更加積極、自信,也是你們的鼓勵讓我完成了本書的寫作。
最後,特別感謝我的母親大人,謝謝您默默為我做出的犧牲和付出,您是我永遠的女神。
徐郡明