繁体   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