如何使用mybatis的collection

小樊
103
2024-07-19 21:21:44

在MyBatis中,可以使用collection元素來(lái)映射一個(gè)集合類(lèi)型的屬性。在mapper文件中,可以通過(guò)collection元素來(lái)定義該集合屬性的映射規(guī)則。

下面是一個(gè)示例,假設(shè)有一個(gè)User類(lèi)和一個(gè)Order類(lèi),一個(gè)User可以有多個(gè)Order,我們可以使用collection元素來(lái)映射這個(gè)關(guān)系:

User類(lèi):

public class User {
    private Long id;
    private String name;
    private List<Order> orders;

    // 省略getter和setter
}

Order類(lèi):

public class Order {
    private Long id;
    private Long userId;
    private String orderNo;

    // 省略getter和setter
}

在mapper文件中,可以使用collection元素來(lái)定義User類(lèi)中的orders屬性的映射規(guī)則:

<select id="getUserById" resultType="User">
    SELECT * FROM user WHERE id = #{id}
</select>

<resultMap id="userMap" type="User">
    <id property="id" column="id"/>
    <result property="name" column="name"/>
    <collection property="orders" ofType="Order">
        <result property="id" column="order_id"/>
        <result property="userId" column="user_id"/>
        <result property="orderNo" column="order_no"/>
    </collection>
</resultMap>

在上面的示例中,我們定義了一個(gè)resultMap來(lái)映射User類(lèi),并使用collection元素來(lái)映射User類(lèi)中的orders屬性,ofType屬性指定了集合中元素的類(lèi)型。在查詢(xún)用戶(hù)信息時(shí),會(huì)同時(shí)查詢(xún)用戶(hù)的訂單信息,并將訂單信息封裝到User對(duì)象的orders屬性中。

這樣,通過(guò)使用collection元素,可以方便地映射集合類(lèi)型的屬性,實(shí)現(xiàn)對(duì)象之間的關(guān)聯(lián)。

0