我有两个(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">
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句