對象關系映射
在實際開發中,實體類之間有一對一、一對多、多對多的關系,所以需要正確配置它們對應關系,Mybatis通過配置文件能夠從數據庫中獲取列數據后自動封裝成對象。
1.泛化關系--------->>(繼承關系)
2.實現關系 ----------->>>(實現關系)
3.依賴關系 ----------------->>>(體現在某個A類引用另外一個B類作為A類的成員變量或者方法中)
4.關聯關系---->(重點)
4.1關聯關系----->>>>>>一對一(分為單向和雙向)
4.2關聯關系------->>>>>多對一(單向)
4.3關聯關系------->>>>>一對多(單向)
4.4關聯關系------->>>>>一對多和多對一(雙向)
4.關聯關系----------->>>>>>多對多
5.聚合關系--------->>>(體現在一個A類中引用另外一個B類作為A類的成員變量中,缺少這個引用他不會出錯)
6.組合關系-------->>>>(體現在一個A類中引用量另外一個B類作為A類的成員變量,但是這個B類的引用是多個,比如是集合類型或者數組類型)
以上就是對象映射關系的分類和詳解,但是上面只是說了在程序中的關聯關系,在下面再說一下這些映射關系在數據庫設計表的時候,具體是怎么回事
-------------------------------------------------------------------------------------------------------------------------
1.泛化關系表的設計
比如普通用戶, 員工, 客戶這三個表的設計, 分了三種設計思想: (1)直接共用一張表;需要加上一列用來區分不同類型 (2)每個子類設計一張表; 把普通用戶設計成一個表, 由於員工和客戶是普通用戶的子類, 所以在普通用戶表中會有所有人的字段, 但是由於員工他有salary列並且客戶有address這個列, 因此使用普通用戶表來存他們共有的字段, 然后再使用員工表和客戶表來存儲他們各自擁有的屬性 (3)每個類簡歷一個表,這種比較容易理解,不用細說
2.實現關系表的設計和依賴關系表的設計跟泛化關系表的設計雷同,省略
3.關聯關系表的設計
3.1一對一
3.2一對多(跟多對一表設計一樣)
4.3多對多表的設計
引入另外一張表,把這兩個表的主鍵存放在另一張表中
5集合關系和組合關系表的設計是一致的,兩個一塊弄了
======================================================================================
以上就是關聯映射的細節詳解,最重要的,難理解的就是關聯關系的那部分,另外附關聯關系中一對多或者多對一中在查詢的時候會存在額外sql的問題的圖的兩種解決辦法
解決方案:
1.是在查詢的時候發送一條額外sql, 如下圖
2.使用內聯映射,利用多表連接查詢