在MyBatis中,collection元素用于處理包含多個子元素的集合類型屬性。它用于指定如何映射包含多個子元素的對象屬性到數據庫中的數據。
collection元素通常用于實現一對多的關聯關系,其中一個對象包含多個子對象。通過collection元素,可以定義子對象的映射關系,并且在查詢時可以自動加載和映射子對象的數據。
使用collection元素時,需要在映射文件中定義相應的resultMap和association元素來定義子對象的映射關系。在查詢語句中使用collection元素來引用相應的resultMap,以實現對子對象的映射。
例如,下面是一個使用collection元素的示例:
<resultMap id="userMap" type="User">
<id property="id" column="id"/>
<result property="username" column="username"/>
<collection property="posts" ofType="Post">
<id property="postId" column="post_id"/>
<result property="title" column="title"/>
<result property="content" column="content"/>
</collection>
</resultMap>
<select id="getUserById" resultMap="userMap">
SELECT u.id, u.username, p.post_id, p.title, p.content
FROM users u
LEFT JOIN posts p ON u.id = p.user_id
WHERE u.id = #{userId}
</select>
在上面的示例中,定義了一個resultMap來映射User對象和其包含的多個Post對象。通過collection元素,定義了Post對象的映射關系,并在查詢語句中引用了該resultMap,以實現對User對象及其包含的Post對象的映射。
總的來說,collection元素是MyBatis中用于處理包含多個子對象的集合類型屬性的重要元素,可以通過它實現對一對多關聯關系的數據映射。