[mybatis]resultMap詳解

resultMap

? ? Mybatis中提供了resultMap功能,可以將數據庫查詢結果映射到Java對象,用于解決 字段名與屬性名不一致復雜關系(如一對多)的映射問題。?

比如一個User類,在它的屬性里還有另一個子對象(或者多個),可以是個List或者其他實體類,這個時候就需要用到

? ? 格式:

<resultMap type="User" id="userOrderMap">

type:要映射的實體類;id:給該resultMap定義一個唯一標識符。

id、result標簽:用于映射指定的屬性(不包含除String外的實體類對象),這兩者的在映射上沒有太多不同。id可以用于標識對象的主鍵字段,提升性能(MyBatis用主鍵判斷對象是否重復)。

<resultMap id="" type=""><id column="" property=""></id><result column="" property=""></id>
</resultMap>

column:對應表的列名

property:java對象的屬性名

collection標簽:用于映射一對多的子對象,比如將多條數據映射到某個集合中(集合的元素類型是某種實體類)。如果有點暈,就記得:給集合、map等類型的屬性賦值,使用collection

<!-- 給list的屬性賦值-->
<collection property="" ofType=""><id column="" property=""></id><result column="" property=""></id>
</collection><!-- 給map屬性賦值-->
<collection property=""           javaType="java.util.HashMap"  <!-- 固定為某個Map,此處寫的是HashMap -->ofType=""         keyColumn=""           <!-- 指定作為Map鍵的列 -->keyProperty=""              <!-- 鍵值對中,值對象中作為鍵的屬性 -->
><id column="" property=""/><result column="" property=""/>
</collection>

property:父對象中對應的子對象

ofType:子對象對應的數據類型,比如該子對象的數據類型是User類,那么此處就填寫User。如果是給Map元素賦值,那么該屬性的功能是指定 value 的數據類型

keyColumn:在映射Map類型數據時,用于指定key 的數據類型

給Map映射的內容,光描述比較抽象難懂,下面是個示例:

public class Order {private Long id;private String orderNumber;private Map<Long, OrderItem> itemMap; // 鍵為商品ID,值為OrderItem對象// Getters & Setters
}public class OrderItem {private Long id;        // 與keyProperty="id"對應private String name;private Integer quantity;// Getters & Setters
}//映射后的數據結構order.getItemMap() = {1001: OrderItem(id=1001, name="商品A", quantity=2),1002: OrderItem(id=1002, name="商品B", quantity=5)
}

?<association>標簽

? ? 與使用collection標簽映射List用法一致,只是將collection改成association即可。區別在于,collection是給集合中多個元素的屬性進行賦值,association是給父對象的某一個子對象元素中的屬性進行賦值。

示例:

<association property="user" javaType="User"><id column="id" property="id"/>             <result column="username" property="name"/>   <result column="sex" property="sex"/>        <!-- 其他字段映射... -->
</association>

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/72555.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/72555.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/72555.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

SpringBoot Actuator

SpringBoot Actuator 一、簡介二、入門1、依賴2、默認監控指標3、查詢監控指標4、全量監控指標 三、Spring Boot Admin1、主要功能2、Admin3、Client4、應用墻5、其他 四、定制化1、定制Health端點2、定制Info端點3、定制Metrics端點4、定制Endpoint端點 一、簡介 SpringBoot自…

python標識符

在 Python 中&#xff0c;標識符&#xff08;Identifier&#xff09;是指用來標識變量、函數、類、模塊等的名稱。標識符的命名規則如下&#xff1a; 1. 標識符的命名規則 字母、數字和下劃線&#xff1a;標識符可以由字母&#xff08;a-z, A-Z&#xff09;、數字&#xff08;…

06 HarmonyOS Next性能優化之LazyForEach 列表渲染基礎與實現詳解 (一)

溫馨提示&#xff1a;本篇博客的詳細代碼已發布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下載運行哦&#xff01; 目錄 一、代碼結構概覽二、詳細代碼解析1. 數據源管理實現2. 數據結構定義3. 優化的列表項組件4. 主列表組件實現 一、代碼結構概覽 本文將詳細解…

vscode 查看3d

目錄 1. vscode-3d-preview obj查看ok 2. vscode-obj-viewer 沒找到這個插件&#xff1a; 3. 3D Viewer for Vscode 查看obj失敗 1. vscode-3d-preview obj查看ok 可以查看obj 顯示過程&#xff1a;開始是綠屏&#xff0c;過了1到2秒&#xff0c;后來就正常看了。 2. vsc…

excel 斜向拆分單元格

右鍵-合并單元格 右鍵-設置單元格格式-邊框 在設置好分割線后&#xff0c;你可以開始輸入文字。 需要注意的是&#xff0c;文字并不會自動分成上下兩行。 為了達到你期望的效果&#xff0c;你可以通過 同過左對齊、上對齊 空格鍵或使用【AltEnter】組合鍵來調整單元格中內容的…

家政保潔維修行業有沒有必要做小程序?

【家政創業必看】家政行業小程序值得做嗎&#xff1f;4大核心優勢告訴你&#xff01; 隨時隨地下單&#xff1a;客戶手機一鍵預約&#xff0c;告別找電話/翻頁面的麻煩 品牌專業升級&#xff1a;精美界面服務詳情用戶評價&#xff0c;打造可信賴形象 營銷神器&#xff1…

利用Python爬蟲按圖搜索1688商品(拍立淘)

在電商領域&#xff0c;按圖搜索商品&#xff08;拍立淘&#xff09;已成為一種重要的功能&#xff0c;尤其適合用戶通過圖片快速查找相似商品。1688開放平臺提供了按圖搜索商品的API接口&#xff0c;允許開發者通過圖片獲取相關的商品信息。本文將詳細介紹如何使用Python爬蟲技…

20250305隨筆 HTML2Canvas 詳解與使用指南

1. 簡介 html2canvas 是一個用于將 HTML 頁面或特定 DOM 元素轉換為 Canvas 畫布的 JavaScript 庫。它通過解析 HTML 和 CSS&#xff0c;生成等效的 Canvas 圖像&#xff0c;從而實現網頁截圖功能。 2. 安裝 可以使用 npm 或 yarn 安裝 html2canvas&#xff0c;也可以通過 C…

【初探數據結構】鏈表OJ算法——哨兵位(合并兩個有序鏈表詳解)

文章目錄 哨兵位&#xff08;Sentinel Node&#xff09;的作用實戰演練思路講解詳細步驟1. **處理特殊情況&#xff08;邊界條件&#xff09;**2. **創建哨兵節點**3. **初始化兩個指針&#xff0c;遍歷兩個鏈表**4. **合并兩個鏈表**5. **處理剩余節點**6. **返回合并后的鏈表…

libcoap在Ubuntu下的編譯(基于CMake)

引言 libcoap 是一個開源的輕量級 C 語言庫&#xff0c;用于實現 CoAP&#xff08;Constrained Application Protocol&#xff0c;受限應用協議&#xff09;。CoAP 是一種專為資源受限設備設計的輕量級通信協議&#xff0c;適用于物聯網&#xff08;IoT&#xff09;和嵌入式系…

命名管道實現傳遞數據到二進制文件

一 前言&#xff1a; 在做項目的過程中&#xff0c;一般來說我們的信息輸入是有固定的端口/來源的&#xff0c;但是在當前的越來越快的開發節奏下&#xff0c;往往會出現輸入源還未完全確定的情況下需要我們先實現功能邏輯&#xff0c;信號接受端后面再對接。或者數據接受端和功…

VSCode知名主題帶毒 安裝量900萬次

目前微軟已經從 Visual Studio Marketplace 中刪除非常流行的主題擴展 Material Theme Free 和 Material Theme Icons&#xff0c;微軟稱這些主題擴展包含惡意代碼。 統計顯示這些擴展程序的安裝總次數近 900 萬次&#xff0c;在微軟實施刪除后現在已安裝這些擴展的開發者也會…

如何快速的解除oracle dataguard

有些時候&#xff0c;我們為了使oracle dg的standby庫另做他用&#xff0c;需要解除oracle dataguard數據同步。我本地因為standby庫存儲出現故障&#xff0c;導致dg存在問題&#xff0c;故需要解除。今天&#xff0c;我們通過使用部分命令&#xff0c;實現dg的快速解除。 1&a…

Windows系統編程(七)HotFixHook

InoolineHook需要讀寫兩次內存&#xff08;先HOOK&#xff0c;再還原&#xff09;&#xff0c;這種Hook方式&#xff0c;性能比較低&#xff0c;具有局限性。今天所講的HotFixHOOK&#xff08;熱補丁&#xff09;是InlineHook的升級版 Win32 API特殊性 Win32API的實現代碼有這…

Python Web應用開發之Flask框架——基礎

一、前言 在即將開啟的 Flask 學習之旅中,為了能夠順利掌握并運用 Flask 進行 Web 開發,您需要具備一定的基礎知識,同時了解相應的運行環境。 需要你具備的知識:Python 編程語言、HTML、CSS、HTTP協議、數據庫(如:MySQL、MongoDB) 本文所使用的環境:操作系統Windows…

TCP通訊與基于C#TCP通訊,跨窗收發消息Demo

TCP&#xff08;傳輸控制協議&#xff09;是一種面向連接的、可靠的、基于字節流的傳輸層通信協議。它廣泛應用于互聯網中的數據通信&#xff0c;如網頁瀏覽、文件傳輸、電子郵件等。以下是TCP通信的基本概念和工作原理&#xff1a; 1. TCP的特點 面向連接&#xff1a;通信前…

【有源碼】仿DeepSeek問答網站+SpringBoot+VUE3+對接DeepSeek API

今天帶來一款優秀的項目&#xff1a;仿DeepSeek問答網站。 功能和官網差不多&#xff0c;也有歷史上下文&#xff0c;流失對話等。 本文介紹了系統功能與部署安裝步驟&#xff0c;如果您有任何問題&#xff0c;也請聯系學姐&#xff0c;偶現在是經驗豐富的程序員&#xff01; …

Ubuntu20.04雙系統安裝及軟件安裝(七):Anaconda3

Ubuntu20.04雙系統安裝及軟件安裝&#xff08;七&#xff09;&#xff1a;Anaconda3 打開Anaconda官網&#xff0c;在右側處填寫郵箱&#xff08;要真實有效&#xff01;&#xff09;&#xff0c;然后Submit。會出現如圖示的Success界面。 進入填寫的郵箱&#xff0c;有一封Ana…

洛谷 P2142 高精度減法(詳解)c++

題目鏈接&#xff1a;P2142 高精度減法 - 洛谷 1.題目 2.算法原理 解法:模擬列豎式計算的過程 先用字符串讀入&#xff0c;然后拆分每一位&#xff0c;逆序放進數組中利用數組&#xff0c;模擬列豎式減法的過程 在這兩步之前要多加一步&#xff0c;在模擬解法的過程&#…

在 MyBatis 中,若數據庫字段名與 SQL 保留字沖突解決辦法

在 MyBatis 中&#xff0c;若數據庫字段名與 SQL 保留字沖突&#xff0c;可通過以下方法解決&#xff1a; 目錄 一、使用轉義符號包裹字段名二、通過別名映射三、借助 MyBatis-Plus 注解四、全局配置策略&#xff08;輔助方案&#xff09;最佳實踐與注意事項 一、使用轉義符號…