簡體   English   中英

Mybatis批量選擇查詢-Java

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM