在 MyBatis 中實現多對一映射可以通過在 resultMap 中使用 association 標簽來實現。下面是一個示例:
假設有兩個表:訂單表(order)和用戶表(user),一個訂單對應一個用戶,即多個訂單對應一個用戶,這是一個多對一的關系。
首先在 Order 實體類中添加一個 User 類型的屬性:
public class Order {
private Long id;
private String orderNo;
private User user;
// getter and setter
}
然后在 Mapper.xml 文件中編寫查詢語句,使用 resultMap 來配置多對一的映射關系:
<resultMap id="orderMap" type="Order">
<id property="id" column="id"/>
<result property="orderNo" column="order_no"/>
<association property="user" javaType="User">
<id property="id" column="user_id"/>
<result property="username" column="username"/>
<result property="email" column="email"/>
<!-- 其他屬性 -->
</association>
</resultMap>
<select id="selectOrderById" resultMap="orderMap">
SELECT o.id, o.order_no, o.user_id, u.username, u.email
FROM order o
JOIN user u ON o.user_id = u.id
WHERE o.id = #{id}
</select>
最后在 OrderMapper 接口中定義方法:
public Order selectOrderById(Long id);
這樣在調用 selectOrderById 方法時,會查詢出訂單信息并關聯查詢出對應的用戶信息,從而實現多對一映射關系。