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


1.本文章是無意中看見易百教程的Mybatis教程才注意到這個問題,平時都僅僅是在用CRUD,忽略了這方面的問題,真實十分羞愧
 
2.首先我們開始對mybatis的一對多的探究
 
根據這個應用場景,我們需要獲取在查詢一個用戶信息的時候還要去讀取這個用戶發布的帖子
現在我們來看一看用戶級聯文章在JavaBean中的編寫方式,這就是一對多在JavaBean中的配置
現在我們再來看一看Mybatis的Mapper該如何編寫一對多?很簡單,就是在resultMap標簽中配置<collection>標簽,用來存儲查詢到的文章列表,注意posts代表的是用戶實體的文章List集合
這樣Sql查詢到的內容就映射到User用戶實體中的屬性中啦,這就是一對多的查詢
 
3.現在我們再來探究一下Mybatis的多對一,現在有一個需求如下
現在我們來看一看文章級聯用戶在JavaBean中的編寫方式,這是多對一在JavaBean中的配置
現在我們再來看一看Mybatis的Mapper該如何編寫多對一?很簡單,就是在resultMap標簽中配置<association></association>標簽關聯所屬的用戶實體
 
 
4.最后我們來探究一下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
這樣再查詢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}]}
 
 
5.各位看官注意哈,本文中並沒有給出所有源碼,而是僅僅看重點,當前本文中的所有示例都是在下根據易百教程的Mybatis教程 https://www.yiibai.com/mybatis/中的案例所測試,在下就僅僅介紹點重點和個人見解了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM