在 MyBatis 中,可以通過嵌套查詢來實現 resultType 的關聯查詢。具體步驟如下:
首先,需要定義兩個實體類,例如 User 和 Order。User 類包含一個 List
public class User {
private int id;
private String name;
private List<Order> orders;
// 省略 getter 和 setter 方法
}
public class Order {
private int id;
private String orderNo;
private double amount;
// 省略 getter 和 setter 方法
}
接下來,需要為 User 和 Order 創建映射文件。在這里,我們將使用 resultMap 來定義嵌套查詢。
<!-- UserMapper.xml -->
<mapper namespace="com.example.dao.UserMapper">
<resultMap id="UserResultMap" type="User">
<id property="id" column="user_id"/>
<result property="name" column="user_name"/>
<collection property="orders" ofType="Order" column="user_id" select="selectOrdersByUserId"/>
</resultMap>
<select id="selectUserWithOrders" resultMap="UserResultMap">
SELECT * FROM user
</select>
<select id="selectOrdersByUserId" resultType="Order">
SELECT * FROM `order` WHERE user_id = #{userId}
</select>
</mapper>
在上面的代碼中,我們定義了一個名為 “UserResultMap” 的 resultMap,其中包含一個 collection 元素。這個元素的作用是將查詢到的訂單數據填充到 User 對象的 orders 屬性中。通過設置 column 屬性為 “user_id” 和 select 屬性為 “selectOrdersByUserId”,我們告訴 MyBatis 在查詢用戶數據時,同時執行 “selectOrdersByUserId” 查詢,并將結果填充到相應的 User 對象的 orders 屬性中。
最后,需要創建一個 UserMapper 接口,用于與映射文件關聯。
public interface UserMapper {
List<User> selectUserWithOrders();
}
現在,你可以在你的業務邏輯中調用 UserMapper 的 selectUserWithOrders() 方法來獲取用戶及其關聯的訂單數據。
List<User> users = userMapper.selectUserWithOrders();
這樣,你就實現了 MyBatis 中 resultType 的嵌套查詢。