在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中用于处理包含多个子对象的集合类型属性的重要元素,可以通过它实现对一对多关联关系的数据映射。