當前位置:
首頁 > 知識 > 框架學習系列 mybatis 第十八篇一對一結果映射的使用1

框架學習系列 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一

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 凱哥java 的精彩文章:

框架學習系列 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 掘金晚報