以前咱們詳細地討論了MyBatis背後的設計理念以及iBATIS框架是如何產生的。也說明了MyBatis是一個混合型解決方案,它從處理關係數據庫的其餘不一樣方法那裏借鑑了許多思想。那麼MyBatis究竟是什麼呢?html
MyBatis就是咱們一般所說的數據映射器。所謂映射器層,是用於在對象和數據庫之間搬運數據,同時保證對象、數據庫以及映射器自己都相互獨立。數據庫
0/RM工具將數據庫表及其列映射爲應用程序中的類及字段。或者說, 0/RM工具在數據庫的元數據與類的元數據之間創建起了一種映射關係。app
MyBatis與0/RM不一樣,它不是直接把類映射爲數據庫表或者說把類的字段映射爲數據庫列, 而是把SQL語句的參數與結果(也即輸入和輸出)映射爲類。正如你將在本書的後續部分中學到 的,iBATIS在類和數據庫表之間創建了一個額外的間接層,這就爲如何在類和數據庫表之間創建 映射關係帶來了更大的靈活性,使得在不用改變數據模型或者對象模型的狀況下改變它們的映射 關係成爲可能。其實咱們這裏討論的這個間接層就是SQL。SQL這個額外的間接層使得iBATIS能夠更好地隔離數據庫設計和應用程序中使用的對象模型。這就使得它們二者之間的相關性降至最低。圖展現了MyBatis如何使用SQL映射數據。框架
Person數據庫設計 |
|
Personide |
identifier工具 |
|
IDspa |
firstName設計 |
|
FIRST NAMEhtm |
lastName |
直接映射 |
LAST一NAME |
middleName |
|
MIDDLE NAME |
hairColor |
|
HAIR COLOR |
height |
|
HEIGHT |
weight |
|
WEIGHT |
Person類 |
必須和PERSON表相匹配 |
圖對象/關係映射
MyBatis的映射層其實就是SQL。MyBatis讓你編寫SQL語句。MyBatis負責在類 的特性和數據庫表的列之間映射參數和結果。基於這個緣由,也考慮到與其餘各類 各樣的映射方式的區分,爲避免混淆,MyBatis團隊一般將所謂的「數據映射器」稱爲SQL映射器。如圖2-2所示,iBATIS的映射層其實就是SQL。MyBatis讓你編寫SQL語句。MyBatis負責在類 的特性和數據庫表的列之間映射參數和結果。基於這個緣由,也考慮到與其餘各類 各樣的映射方式的區分,爲避免混淆,MyBatis團隊一般將所謂的「數據映射器」稱爲SQL映射器 (SQL mapper)。
系列文章: