揽峰moc 2015-08-20 17:57 采纳率: 50%
浏览 7297
已采纳

求经验!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 01: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条)
编辑
预览

报告相同问题?

悬赏问题

  • ¥80 App Store Connect 中设置了订阅项目,Xcode 中预览可以正确显示价格,真机测试却无法显示
  • ¥15 MATLAB的PIV算法问题
  • ¥15 RflySim例程学习:matlab编译报错
  • ¥20 谁来给我解答一下疑惑
  • ¥80 有偿!!请懂注册表的翻译解析一下一小段注册表的调整内容
  • ¥15 基于52单片机 交通灯系统
  • ¥15 根据访客ip显示城市名称
  • ¥20 对文档进行操作,有偿 有意向的可以加我v
  • ¥15 brainstorm进行致痫指数分析
  • ¥30 beeline连接hive集群会卡住
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部