gpt4 book ai didi

java - Mybatis批量选择查询-Java

转载 作者:行者123 更新时间:2023-11-30 00:10:08 25 4
gpt4 key购买 nike

我想从表中获取所有记录,同时满足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>

关于java - Mybatis批量选择查询-Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24137038/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com