在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属性,我们可以方便地映射一对多的关系,并进行复杂的查询操作。