揽峰moc 2015-08-21 01:57 采纳率: 50%
浏览 7296
已采纳

求经验!Mybatis 针对Oracle数据库如何写“多条件”批量删除语句?

我的写法:

  <delete id="delMultiByIds2" parameterType="java.util.List">  
  delete from tb_duty where
    <foreach collection="list" item="item" index="index" separator="or">  
       ( dscd=#{item.dscd}, 
       and unit_id=#{item.unitId},
       and year=#{item.year},
       and month=#{item.month},
       and flag=#{item.flag} )
    </foreach> 
</delete>

语句的语法没错,只是无法删除数据库中的记录,肯定是语句的写法有问题。
图片说明
希望有经验的高手指教一把!

  • 写回答

8条回答 默认 最新

  • 揽峰moc 2015-08-22 09:02
    关注

    问题解决后兴奋地写下:
    程序批量删除无法删除的主要问题最终还是在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>
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(7条)

报告相同问题?

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵