[英]Mybatis Batch Select Query - Java
我想從表中獲取所有記錄,同時滿足mybatis select查詢中的某些條件。 舉個例子:
SELECT * FROM Employee e WHERE e.location = ? AND e.status = ?
參數集作為“地圖列表”傳遞,以生成多個查詢,如下所示。
List = {{location=Colombo, status=available}, {location=Galle, status=onCall}}
SELECT * FROM Employee e WHERE e.location = 'Colombo' AND e.status = 'available'
SELECT * FROM Employee e WHERE e.location = 'Galle' AND e.status = 'onCall'
我想要做的是以批處理模式運行上述查詢。
在這里我嘗試了什么,但是查詢不是預期的。
<select id="availabeEmployees" parameterType="java.util.List"
resultMap="employeeDtoMap">
SELECT * FROM Employee e
WHERE
<foreach item="item" index="index" collection="list">
e.location = #{item.location}
AND e.status = #{item.status}
</foreach>
</select>
我想出了以下解決方案。 我已經使用UNION來組合所有選擇查詢。 添加一些棘手的解決方案以避免將UNION附加到最后一個選擇查詢。 將map的最后一個元素設置為last == true
,為其他元素設置為false
。
<select id="availabeEmployees" parameterType="java.util.List"
resultMap="employeeDtoMap">
<foreach item="item" index="index" collection="list">
SELECT * FROM Employee e
WHERE e.location = #{item.location}
AND e.status = #{item.status}
<if test="item.last == 'false'">UNION</if>
</foreach>
</select>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.