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

求经验!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 R运行没有名称为"species"的插槽对于此对象类"SDMmodelCV"
  • ¥20 基于决策树的数字信号处理,2ask 2psk 2fsk的代码,检查下报错的原因
  • ¥20 python作业求过程
  • ¥15 wincc已组态的变量过多
  • ¥60 如图:直线与椭圆X轴平行,求直线与椭圆任意一点的相切坐标计算公式
  • ¥50 如何用python使用opencv里的cv::cudacodec::VideoWriter函数对视频进行GPU硬编码
  • ¥100 c#solidworks 二次开发 工程图自动标边线法兰 等折弯尺寸怎么标
  • ¥15 halcon DrawRegion 提示错误
  • ¥15 FastAPI Uvicorn启动显示404
  • ¥15 centos7.9脚本,怎么排除特定的访问记录