问题解决后兴奋地写下:
程序批量删除无法删除的主要问题最终还是在sql语句上,虽然debug日志上能看到sql语句和参数都没有问题,但是!sql语句执行的时候并没有拿到这些个参数。经调试,将foreach中参数赋值的写法由原先的
<foreach collection="list" item="item" index="index" separator="union all">
。。。B.dscd=#{item.dscd} and B.unit_id=#{item.unitId} 。。。
</foreach>
修改为:
<foreach collection="list" item="item" index="index" separator="union all">
。。。B.dscd=${item.dscd} and B.unit_id=${item.unitId} 。。。
</foreach>
至此,困扰我许久的问题得以解决!
附:Mybatis针对Oracle数据库“多条件”批量删除的mapper.xml
<!-- 批量删除值班表 -->
<delete id="delMultiByIds2" parameterType="java.util.List">
delete from tb_duty A
where exists
(
select 1 from(
<foreach collection="list" item="item" index="index" separator="union all">
select B.* from tb_duty B where 1=1 and B.dscd=${item.dscd} and B.unit_id=${item.unitId} and
B.year=${item.year} and B.month=${item.month} and B.flag=${item.flag}
</foreach>
)S where A.duty_id=S.duty_id
)
</delete>