在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)。