在MyBatis中,我們可以使用collection屬性來(lái)映射一個(gè)集合類(lèi)型的屬性。這個(gè)屬性通常用于映射一對(duì)多的關(guān)系,即一個(gè)對(duì)象中包含多個(gè)子對(duì)象的集合。
在進(jìn)行集合屬性映射時(shí),我們需要使用
<resultMap id="userMap" type="User">
<id property="id" column="id"/>
<result property="username" column="username"/>
<result property="age" column="age"/>
<collection property="orders" ofType="Order">
<id property="id" column="order_id"/>
<result property="orderName" column="order_name"/>
<result property="price" column="price"/>
</collection>
</resultMap>
在上面的示例中,我們定義了一個(gè)resultMap用于映射User對(duì)象,其中包含一個(gè)集合屬性orders,用于映射用戶(hù)的訂單信息。在
在使用集合屬性進(jìn)行查詢(xún)時(shí),我們可以通過(guò)嵌套select語(yǔ)句來(lái)查詢(xún)集合屬性的值,示例如下:
<select id="getUserById" resultMap="userMap" parameterType="int">
SELECT u.id, u.username, u.age, o.id as order_id, o.order_name, o.price
FROM users u
LEFT JOIN orders o ON u.id = o.user_id
WHERE u.id = #{id}
</select>
在上面的示例中,我們通過(guò)LEFT JOIN查詢(xún)用戶(hù)信息和訂單信息,并將查詢(xún)結(jié)果映射到User對(duì)象的集合屬性orders中。
通過(guò)使用collection屬性,我們可以方便地映射一對(duì)多的關(guān)系,并進(jìn)行復(fù)雜的查詢(xún)操作。