mybatis的一對多,多對一,以及多對對的配置和使用

小樓昨夜又西風發表於2019-03-10

1.現在我們來看一看"使用者” 級聯 “帖子”(解釋:一個使用者對應多個帖子)在JavaBean中的編寫方式,這就是一對多在JavaBean中的配置
在這裡插入圖片描述
現在我們再來看一看Mybatis的Mapper該如何編寫一對多?很簡單,就是在resultMap標籤中配置標籤,用來儲存查詢到的文章列表,注意posts代表的是使用者實體的文章List集合
小疑問: 我覺得這裡的collection標籤裡的 colum沒用,
在這裡插入圖片描述
在這裡插入圖片描述
可以參考連結如下:
https://www.cnblogs.com/kenhome/p/7764398.html在這裡插入圖片描述
這樣Sql查詢到的內容就對映到User使用者實體中的屬性中啦,這就是一對多的查詢
2.現在我們再來探究一下Mybatis的多對一,現在有一個需求如下
現在我們來看一看文章級聯使用者在JavaBean中的編寫方式,這是多對一在JavaBean中的配置
在這裡插入圖片描述
現在我們再來看一看Mybatis的Mapper該如何編寫多對一?很簡單,就是在resultMap標籤中配置標籤關聯所屬的使用者實體
在這裡插入圖片描述
3.最後我們來探究一下Mybatis的多對多,在很多時候我們較好的運用多對多可以處理很多現實的邏輯問題,比如現在我們有下面這樣一個需求
在這裡插入圖片描述
當前,一個使用者可以擁有多個組,一個組也可以擁有多個使用者,這樣的關係就是多對多,為了解決這個問題,我們需要在使用者和組之間建立一張關聯的表,用於儲存他們之間的對應關係,使用者和組都通過這個關聯的表,來查詢他們之間的關係
在這裡插入圖片描述
現在我我們先來看一看這個關聯物件的JavaBean和其Mybatis的Mapper檔案是怎麼樣的
首先是JavaBean
在這裡插入圖片描述
再來看看這個實體對應的Mapper檔案,只有兩個功能
在這裡插入圖片描述
現在我們開始來看我們的主角Users使用者和Group組這兩位的JavaBean和Mapper檔案時怎麼寫的
先看Users(使用者實體)
在這裡插入圖片描述
Users的Mapper
在這裡插入圖片描述
這樣查詢到的的User對使用者象就是這樣的,把這個使用者所對應的組都查了出來
Users{id=0, username=‘yiibai’, mobile=‘13838009988’, groups=[Group{groupId=1, groupName=‘Group-1’, users=null}, Group{groupId=2, groupName=‘Group-2’, users=null}]}
再來看看Group(組實體),其實就是和Users實體是一樣的哈
還是看Group的JavaBean
在這裡插入圖片描述
再看看看Group的Mapper
解釋: 下圖中collectio後面的select查詢語句id(應該是UserGroupMapper裡面的select)不是下圖下面的那個select,不要搞混了,本來下圖定義的resultMap就是為了下圖定義的select而服務的,所以不要把collectio後面的select和下圖中的select搞混了
在這裡插入圖片描述
這樣再查詢Group的時候就會把這個組的所有成員都查詢出來了
Group{groupId=0, groupName=‘Group-1’, users=[Users{id=1, username=‘yiibai’, mobile=‘13838009988’, groups=null}, Users{id=2, username=‘User-name-1’, mobile=‘13838009988’, groups=null}]}

相關文章