在MyBatis中,我們可以使用collection屬性來映射一個集合類型的屬性。這個屬性通常用于映射一對多的關系,即一個對象中包含多個子對象的集合。
在進行集合屬性映射時,我們需要使用
<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>
在上面的示例中,我們定義了一個resultMap用于映射User對象,其中包含一個集合屬性orders,用于映射用戶的訂單信息。在
在使用集合屬性進行查詢時,我們可以通過嵌套select語句來查詢集合屬性的值,示例如下:
<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>
在上面的示例中,我們通過LEFT JOIN查詢用戶信息和訂單信息,并將查詢結果映射到User對象的集合屬性orders中。
通過使用collection屬性,我們可以方便地映射一對多的關系,并進行復雜的查詢操作。