天天看點

多對一的處理 | 學習筆記

開發者學堂課程【MyBatis持久層架構入門:多對一的處理】學習筆記,與課程緊密聯系,讓使用者快速學習知識。

課程位址:

https://developer.aliyun.com/learning/course/21/detail/447

多對一的處理

1. 資料庫表的設計

學生對應老師是多對一的關系,一個老師對應多個學生。

多對一的處理 | 學習筆記

建立外鍵關系

多對一的處理 | 學習筆記

Student 表和 teacher表中的詳細資訊

2.實體類

Teacher.java

多對一的處理 | 學習筆記

Student.java

多對一的處理 | 學習筆記
多對一的處理 | 學習筆記
多對一的處理 | 學習筆記

編寫映射檔案

編寫學生将老師查詢出來

是以編寫 student.mapper.xml  多對一共有兩種處理方式以下為第一種:

A:結果嵌套處理

多對一的處理 | 學習筆記
多對一的處理 | 學習筆記

首先把所有資料通過資料庫查詢出來,将所查詢到的資料對應到實體類中。

其中 association 表示為關聯對象;property 意思為:關聯對象在 Student 實體類中的屬性

以下是完整輸出結果互相關聯的表。

多對一的處理 | 學習筆記
多對一的處理 | 學習筆記

最終測試檔案:

多對一的處理 | 學習筆記

B:查詢嵌套處理

第二種方式更為簡單一些,展現在資料庫查詢上,其他的不需要關注,隻需要更加關注關聯對象 association,給其配備 property、column、select 以及 JavaType,select 的是 teacher.mapper.xml 中的 getTeacher。

多對一的處理 | 學習筆記

将核心應射檔案關聯到 teacher,這是一種最常用的寫法,因為每一個實體類都要有對應的映射檔案

多對一的處理 | 學習筆記

在查找時可單獨寫 teacher.mapper.xml,也可以将所選内容寫到student.mapper.xml 中,隻是目前檔案中更友善快捷,若出現形式過于多複雜等情況建議寫成多個檔案形式。

多對一的處理 | 學習筆記
多對一的處理 | 學習筆記

總結:首先在資料庫中查詢到學生資訊,将未被處理到的 id 去找到一個結果起到映射作用,也就是 resultMap,他的類型為 student。idname 處理後多了一個 tid;其中的 tid 時關于 property 中的 teacher 這個類型。

在根據 tid 到另外一張表中去查詢,調用這張表中的 select 去查詢老師的資訊。