[英]How to map multiple beans in Mybatis?
我有兩個(1) CarBean和(2) WheelBean ,如下所示
public class CarBean implements Serializable {
private Long carId;
private List<WheelBean> wheels;
}
我有兩張汽車和車輪的桌子。 我想從汽車表中查詢數據,並使用左聯接到車輪表。 我想使用如下
<select id='getCarById' parameterType='Long' resultType='mypackage.CarBean'>
SELECT
C.*,W.*
FROM CAR C
LEFT JOIN WHEEL W
ON C.CAR_ID = W.CAR_ID
WHERE CAR_ID = #{carId}
</select>
但是這樣一來,我無法從輪盤獲取數據,因為沒有與輪盤信息匹配的數據。 所以,現在我使用的擴展 CarBean到WheelBean,並在我的XML數據源是
<select id='getCarById' parameterType='Long' resultType='mypackage.WheelBean'>
SELECT
C.*,W.*
FROM CAR C
LEFT JOIN WHEEL W
ON C.CAR_ID = W.CAR_ID
WHERE CAR_ID = #{carId}
</select>
這樣,我可以同時獲得CarBean和WheelBean數據。 我的問題是“ ..有沒有辦法在不將carBean擴展到wheelBean的情況下獲取carBean和wheelBean數據?”
我認為正常情況下, WheelBean應該擴展CarBean而不是CarBean 。 我對嗎 ? 在我的服務層, WheelBean List在CarBean中是復合的。 我該怎么辦?
您可以根據需要映射任意數量,但是MyBatis
將通過queryForObject
或queryForList
或其他方法提供查詢結果。
世界上沒有方法可以返回兩個值。
因此,唯一的方法是將它們綁定在一個類中。
現在,由於您不想extending carBean to wheelBean
因此可以嘗試一下
創建另一個包含結果的類,該類將同時包含carBean和wheelBean作為屬性
然后使結果圖像
<resultMap class="mypackage.YourNewClass" id="mapId">
<result property="carBean.pro1" column="" />
<result property="carBean.pro2" column="" />
......
<result property="wheelBean.pro1" column="" />
<result property="wheelBean.pro2" column="" />
然后顯示此結果圖以選擇查詢
<select id="getCarById" resultMap="mapId" parameterClass="Long">
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.