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