框架學習系列 mybatis 第十八篇一對一結果映射的使用1
1:resultMap的使用
2:總結&下節預告
3:凱哥真誠的說一說
本文是《凱哥陪你學系列-框架學習之mybatis框架學習》中第十八篇 高級結果一對一結果映射之resultMap的使用
在上節課中,我們學了resultType的使用。其實就是擴展一個類,然後使用resultType。
我們知道,mybatis返回resultType還有一種是返回resultMap.所以,這節課我們來講解resultMap的使用。
一:resultMap的使用
先回顧,之前學習的resulMap的用法(單表查詢的)
在《框架學習系列 mybatis 第十二篇 mapper映射文件之輸出映射》這一篇文章中,我們介紹了單表的resulMap的使用。
user-mapper.xml中如下:
我們發現,就是資料庫欄位和對應pojo對象的屬性一一對應就可以了。
可是,現在我們講解的是一對一的結果映射,怎麼弄呢?
1.1:一對一結果映射之resultMap的使用
使用,resultMap來進行一對一結果映射,其實就是將關聯對象添加到主信息的對象中。
具體來說,就是對象嵌套對象的一種映射方式。
什麼意思呢?請看下圖:
我們修改擴展類 OrdersExt.添加需要關聯的表對象(也就是user表的pojo對象)
思考:user對象,在OrderMapper.xml文件中怎麼對應呢?
1.2:一對一實體嵌套映射文件的寫法
在mybatis中一對一映射使用的是:association標籤
通過之前的學習,我們知道,要想使用自定義的resulMap,必須先定義,然後再使用。
所以,我們先來定義訂單與用戶關係的自定義resulMap:
說明:
訂單與用戶是一對一的映射關係
association:mybatis中一對一關聯映射
property:一方(從表:比如這裡的user表)在另一方(主表,比如這裡的ordres表)中對應的屬性
在本實例中 主表是orders,從表是user.
而從表user的pojo對象,在主表orders的pojo對象中對應的屬性是user.
所以這裡的property=user
javaType:聲明從表對應的pojo實體類
id:主表中外建列對應從表主鍵的屬性
column:主鍵外建對應的列名
property:主表外建對應從表主鍵的實體對象中屬性
在本實例中,我們知道orders表對應user表的外建是user_id
而user表主鍵對應user的pojo對象中屬性就是id
所以這裡的 column="user_id" property="id"
result:需要查詢的非主鍵資料庫列對應Java中pojo實體中的屬性
用法不變。
這裡是從表的資料庫列對應從表的pojo實體對象屬性
本實例中的user表中需要查詢的用戶名、性別這兩列分別對應user表實體對象pojo的屬性
直接看截圖:
對應mpper介面類寫法:
測試類寫法:
運行結果:
二:總結&下節預告
總結:
經過上節課和本節課的學習,我們知道一對一映射查詢返回有兩種方式:
resulType和resultMap兩種方式。
通過比較,我們發現:
1:在一對一的結果映射時候,使用resultType更加的簡單方便
2:如果有特殊要求(對象嵌套對象)的時候,需要使用reuslMap來進行映射了。
應用場景:
resultMap:
比如在查詢訂單列表的時候,需要點擊列表中的看訂單詳情按鈕的時候,就需要使用resultMap進行映射了。這樣可以直接將用戶信息也查下出來。
resulType:
使用resultType更傾向於查詢明細信息。比如查詢訂單明細列表。
注意:訂單列表(orders)和訂單明細(orderdetail)列表不是同一個表!!
下節預告:
先看需求:
在查詢訂單信息的時候,關聯查詢出訂單明細信息以及用戶信息。
注意:
訂單信息與訂單明細是一對多關係
訂單信息與用戶信息是一對一關係。
怎麼實現呢?
歡迎學習下一篇:一對多的查詢。
ps:凱哥說一說。
如果您在瀏覽本文的時候,感覺本文對您有幫助,收藏的同時也請你轉發下。謝謝
如果您感覺本文哪裡講的不好,或者是哪裡講錯了,又或者是哪裡不明白,歡迎評論。
凱哥真誠的希望大家評論。
框架學習系列 mybatis 第十七篇 高級結果映射一
框架學習系列 mybatis 第十六篇常用標籤三及比較
框架學習系列 mybatis 第十五篇動態sql及常用標籤二
框架學習系列 mybatis 第十四篇 動態sql一
※框架學習系列 mybatis 第十七篇 高級結果映射一
※框架學習系列 mybatis 第十六篇常用標籤三及比較
※框架學習系列 mybatis 第十五篇動態sql及常用標籤二
※框架學習系列 mybatis 第十四篇 動態sql一
※框架學習系列 mybatis 第十三篇 全局配置文件 二
TAG:凱哥java |
※Anime Trending一月新番人氣榜 第四周排名結果公布
※小伙因穿Canada Goose被劫!結果是件假的
※來吃狗糧啦!Anime Trending一月新番CP人氣榜投票結果
※iPhone 8 Plus對比老機型一加3T 結果很尷尬
※又一肺癌新葯Poziotinib取得超預期臨床試驗結果!
※三星Galaxy S9測試結果:iPhoneX性價比不如S9?為啥三星這麼牛
※原來根管「超充」也有好壞之分!「一字之差」結果卻大相徑庭,overfilling與overextension有何不同?
※Radio Romance第一集,奔著金所炫追劇結果被尹斗俊圈粉了
※26 歲的 IU 拍攝「New Balance 畫報」的結果
※三星Galaxy S9+速度測試比拼iPhone X,結果誰敗了?
※三代iPhone Plus續航比拼:最持久耐用的結果是它
※三星Galaxy S9與索尼Xperia XZ2在MWC大PK,沒想到結果是這樣
※angelababy發言分享自己的感觸與經歷,結果評論一邊倒
※外媒Anime Trending一月新番角色人氣投票結果公布
※索尼回應XZ2系列砍掉3.5mm耳機孔:Ambient Flow設計妥協結果
※像清純的女學生?26 歲的 IU 拍攝「New Balance 畫報」的結果
※Jessica&Krystal 「鄭氏姐妹」合體拍攝畫報的結果
※露營第一!niconico公布網友追番率調查結果
※三星S9+/iPhoneX性能對決 Exynos和A11結果令人意外
※IBM Watson 與人類腫瘤專家的治療決策一致性研究結果公布;Facebook 正式部署人臉識別功能 | AI 掘金晚報