最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

mybatis中一對(duì)一、一對(duì)多的<association> 配置使用

 更新時(shí)間:2025年05月09日 10:33:34   作者:小玉起起  
<association>?是 MyBatis 中處理一對(duì)一或一對(duì)多關(guān)系的映射元素,用于處理一對(duì)一和一對(duì)多關(guān)系的映射,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

<association> 是 MyBatis 中處理一對(duì)一或一對(duì)多關(guān)系的映射元素,用于將查詢結(jié)果中的嵌套數(shù)據(jù)映射到 Java 對(duì)象的屬性中。它常用于表示對(duì)象之間的關(guān)聯(lián)關(guān)系,尤其是在復(fù)雜的數(shù)據(jù)庫查詢結(jié)果需要映射為嵌套對(duì)象時(shí)。

1. 作用與用途

  • 一對(duì)一關(guān)系:當(dāng)一個(gè)對(duì)象包含一個(gè)關(guān)聯(lián)對(duì)象時(shí)(例如,一個(gè) User 只對(duì)應(yīng)一個(gè) Address),可以使用 <association> 映射一對(duì)一關(guān)系。
  • 一對(duì)多關(guān)系:當(dāng)一個(gè)對(duì)象包含多個(gè)關(guān)聯(lián)對(duì)象時(shí)(例如,一個(gè) Org 對(duì)應(yīng)多個(gè) User),可以使用 <association> 映射一對(duì)多關(guān)系。
  • 多級(jí)嵌套映射:當(dāng)查詢涉及多個(gè)關(guān)聯(lián)對(duì)象時(shí),<association> 可以幫助將查詢結(jié)果自動(dòng)填充到 Java 對(duì)象中,避免手動(dòng)編寫復(fù)雜的映射代碼。

2. <association> 基本用法

  • property:Java 對(duì)象中用于存儲(chǔ)關(guān)聯(lián)對(duì)象的屬性名。
  • resultMap:指定一個(gè) resultMap,指明如何將查詢結(jié)果中的字段映射到該關(guān)聯(lián)對(duì)象。
  • columnPrefix:為數(shù)據(jù)庫列加上前綴,避免列名沖突。

3. 示例說明:一對(duì)一與一對(duì)多映射

假設(shè)有兩個(gè)實(shí)體:User 和 Address,以及 Org 和多個(gè) User,我們分別演示如何使用 <association> 進(jìn)行一對(duì)一和一對(duì)多的映射。

4. 示例 1:一對(duì)一關(guān)聯(lián)映射

數(shù)據(jù)表結(jié)構(gòu)

假設(shè)數(shù)據(jù)庫中有兩張表:users 和 address。

users 表:存儲(chǔ)用戶信息

user_iduser_name
1Alice
2Bob

address 表:存儲(chǔ)地址信息

address_iduser_idstreetcity
11123 MainNYC
22456 ElmLA

1.1 定義 Java 類

// User.java
public class User {
    private int id;
    private String name;
    private Address address;  // 一對(duì)一關(guān)聯(lián)

    // getters and setters
}

// Address.java
public class Address {
    private int id;
    private String street;
    private String city;

    // getters and setters
}

1.2 創(chuàng)建 resultMap

<!-- Address resultMap -->
<resultMap id="addressResultMap" type="com.example.Address">
    <result property="id" column="address_id"/>
    <result property="street" column="street"/>
    <result property="city" column="city"/>
</resultMap>

<!-- User resultMap -->
<resultMap id="userResultMap" type="com.example.User">
    <id property="id" column="user_id"/>
    <result property="name" column="user_name"/>
    <association property="address" resultMap="addressResultMap"/>
</resultMap>

1.3 SQL 查詢

<select id="findUserWithAddress" resultMap="userResultMap">
    SELECT u.user_id, u.user_name, a.address_id, a.street, a.city
    FROM users u
    LEFT JOIN address a ON u.user_id = a.user_id
    WHERE u.user_id = #{userId}
</select>

1.4 結(jié)果映射

如果查詢 user_id=1,返回如下數(shù)據(jù):

user_iduser_nameaddress_idstreetcity
1Alice1123 MainNYC

結(jié)果會(huì)映射為:

User user = new User();
user.setId(1);
user.setName("Alice");

Address address = new Address();
address.setId(1);
address.setStreet("123 Main");
address.setCity("NYC");

user.setAddress(address);

5. 示例 2:一對(duì)多關(guān)聯(lián)映射

數(shù)據(jù)表結(jié)構(gòu)

假設(shè)有兩張表:org 和 users

  • org 表:存儲(chǔ)組織信息

    org_idorg_name
    101Finance
    102HR
  • users 表:存儲(chǔ)用戶信息

    user_iduser_nameorg_id
    1Alice101
    2Bob101
    3Carol102

2.1 定義 Java 類

// User.java
public class User {
    private int userId;
    private String userName;

    // getters and setters
}

// Org.java
public class Org {
    private int orgId;
    private String orgName;
    private List<User> users;  // 一對(duì)多關(guān)聯(lián)

    // getters and setters
}

2.2 創(chuàng)建 resultMap

<!-- User resultMap -->
<resultMap id="userResultMap" type="com.example.User">
    <result property="userId" column="user_id"/>
    <result property="userName" column="user_name"/>
</resultMap>

<!-- Org resultMap -->
<resultMap id="orgResultMap" type="com.example.Org">
    <result property="orgId" column="org_id"/>
    <result property="orgName" column="org_name"/>
    <association property="users" resultMap="userResultMap"/>
</resultMap>

2.3 SQL 查詢

<select id="findOrgWithUsers" resultMap="orgResultMap">
    SELECT o.org_id, o.org_name, u.user_id, u.user_name
    FROM org o
    LEFT JOIN users u ON o.org_id = u.org_id
</select>

2.4 結(jié)果映射

查詢返回結(jié)果:

org_idorg_nameuser_iduser_name
101Finance1Alice
101Finance2Bob
102HR3Carol

會(huì)映射為:

List<Org> orgs = new ArrayList<>();

// org 1
Org org1 = new Org();
org1.setOrgId(101);
org1.setOrgName("Finance");

User user1 = new User();
user1.setUserId(1);
user1.setUserName("Alice");

User user2 = new User();
user2.setUserId(2);
user2.setUserName("Bob");

org1.setUsers(Arrays.asList(user1, user2));

// org 2
Org org2 = new Org();
org2.setOrgId(102);
org2.setOrgName("HR");

User user3 = new User();
user3.setUserId(3);
user3.setUserName("Carol");

org2.setUsers(Arrays.asList(user3));

// 添加到列表
orgs.add(org1);
orgs.add(org2);

6. 總結(jié)

  • <association> 用途:

    • 一對(duì)一關(guān)系:通過 <association> 映射一個(gè)對(duì)象到另一個(gè)對(duì)象的屬性。
    • 一對(duì)多關(guān)系:通過 <association> 映射多個(gè)對(duì)象到一個(gè)集合屬性。
    • 嵌套結(jié)果映射:支持多級(jí)嵌套查詢,將復(fù)雜的查詢結(jié)果映射為多層嵌套的 Java 對(duì)象。
  • 常用屬性:

    • property:指定要填充的 Java 類屬性。
    • resultMap:指向用于處理該關(guān)聯(lián)對(duì)象映射的 resultMap。
    • columnPrefix:給數(shù)據(jù)庫列名加前綴,避免列名沖突。
  • 查詢結(jié)果映射:<association> 會(huì)根據(jù)查詢返回的結(jié)果自動(dòng)將嵌套對(duì)象填充到 Java 對(duì)象中,簡(jiǎn)化了復(fù)雜的查詢結(jié)果的處理。

通過合理使用 <association>,你可以輕松地處理一對(duì)一和一對(duì)多的對(duì)象關(guān)系,避免手動(dòng)編寫復(fù)雜的結(jié)果映射代碼,提升代碼的可維護(hù)性和可讀性。

到此這篇關(guān)于mybatis中一對(duì)一、一對(duì)多的<association> 配置使用的文章就介紹到這了,更多相關(guān)mybatis 一對(duì)一、一對(duì)多配置內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Hibernate懶加載之<class>標(biāo)簽上的lazy

    Hibernate懶加載之<class>標(biāo)簽上的lazy

    這篇文章主要介紹了Hibernate懶加載之<class>標(biāo)簽上的lazy,分享了相關(guān)代碼示例,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02
  • Maven中Junit測(cè)試@Test等注解無法識(shí)別的問題及解決

    Maven中Junit測(cè)試@Test等注解無法識(shí)別的問題及解決

    這篇文章主要介紹了Maven中Junit測(cè)試@Test等注解無法識(shí)別的問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • springboot + jpa實(shí)現(xiàn)刪除數(shù)據(jù)的操作代碼

    springboot + jpa實(shí)現(xiàn)刪除數(shù)據(jù)的操作代碼

    這篇文章主要介紹了springboot + jpa實(shí)現(xiàn)刪除數(shù)據(jù)的操作代碼,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2024-05-05
  • Spring MVC深度解析從原理到實(shí)戰(zhàn)(最新推薦)

    Spring MVC深度解析從原理到實(shí)戰(zhàn)(最新推薦)

    MVC是一種經(jīng)典的軟件架構(gòu)模式,本文給大家介紹Spring MVC深度解析從原理到實(shí)戰(zhàn),感興趣的朋友一起看看吧
    2025-05-05
  • SpringBoot環(huán)境Druid數(shù)據(jù)源使用及特點(diǎn)

    SpringBoot環(huán)境Druid數(shù)據(jù)源使用及特點(diǎn)

    Druid 是目前比較流行的高性能的,分布式列存儲(chǔ)的OLAP框架(具體來說是MOLAP)。本文給大家分享SpringBoot環(huán)境Druid數(shù)據(jù)源使用及特點(diǎn)介紹,感興趣的朋友跟隨小編一起看看吧
    2021-07-07
  • Java實(shí)現(xiàn)單鏈表的操作

    Java實(shí)現(xiàn)單鏈表的操作

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)單鏈表的操作,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Java動(dòng)態(tài)代理之?dāng)r截器的應(yīng)用

    Java動(dòng)態(tài)代理之?dāng)r截器的應(yīng)用

    今天小編就為大家分享一篇關(guān)于Java動(dòng)態(tài)代理之?dāng)r截器的應(yīng)用,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • spring?NamedContextFactory在Fegin配置及使用詳解

    spring?NamedContextFactory在Fegin配置及使用詳解

    在我們?nèi)粘m?xiàng)目中,使用FeignClient實(shí)現(xiàn)各系統(tǒng)接口調(diào)用變得更加簡(jiǎn)單,?在各個(gè)系統(tǒng)集成過程中,難免會(huì)遇到某些系統(tǒng)的Client需要特殊的配置、返回讀取等需求。Feign使用NamedContextFactory來為每個(gè)Client模塊構(gòu)造單獨(dú)的上下文(ApplicationContext)
    2023-11-11
  • Kafka是什么及如何使用SpringBoot對(duì)接Kafka(最新推薦)

    Kafka是什么及如何使用SpringBoot對(duì)接Kafka(最新推薦)

    這篇文章主要介紹了Kafka是什么,以及如何使用SpringBoot對(duì)接Kafka,今天我們通過一個(gè)Demo講解了在SpringBoot中如何對(duì)接Kafka,也介紹了下關(guān)鍵類?KafkaTemplate,需要的朋友可以參考下
    2023-11-11
  • Java for-each循環(huán)(遍歷循環(huán))詳解

    Java for-each循環(huán)(遍歷循環(huán))詳解

    本文詳解Java for-each循環(huán),涵蓋其簡(jiǎn)化遍歷、類型安全、不可變性、空指針防護(hù)等特性,適用場(chǎng)景及限制,錯(cuò)誤案例與修正,性能對(duì)比,高級(jí)技巧(如Java14 Records),并提供最佳實(shí)踐指南
    2025-07-07

最新評(píng)論

绥棱县| 安西县| 通化市| 龙山县| 崇州市| 合肥市| 随州市| 阿图什市| 汾阳市| 乃东县| 吉林市| 东兴市| 江西省| 沾化县| 黄大仙区| 巨野县| 永德县| 乡宁县| 南江县| 平果县| 清镇市| 墨玉县| 河北省| 通榆县| 甘孜| 阿巴嘎旗| 孟津县| 西林县| 集安市| 牙克石市| 石泉县| 古浪县| 揭东县| 仪征市| 龙井市| 宜章县| 牡丹江市| 车险| 崇信县| 高阳县| 色达县|