关于MyBatis多条件批量插入的sql语句

丶雨过天晴 2014-09-15 09:23:21
之前做的是单条数据插入多个作业(case_NO)中
#{item}是多作业的id
#{id}是查询的单条数据

<insert id="_addLoadCutBatch" parameterType="map">
insert into ST_TCSCATTROUT(
NAME,
X,
I,
CASE_NO
)
<foreach collection="caseNoList" item="item" index="index" separator="UNION ALL">
select
NAME,
X,
I,
#{item}

from ST_TCSCATTROUT T
where T.NAME||T.CASE_NO =#{id}

</insert>

现在要改成多条数据插入多条作业也就是要把#{id}换成一个list组合需要遍历一下

改成下面这样不行啊。。。俩个list遍历该怎么弄

<insert id="_addLoadCutBatch" parameterType="map">
insert into ST_TCSCATTROUT(
NAME,
X,
I,
CASE_NO
)
<foreach collection="caseNoList" item="item" index="index" separator="UNION ALL">
select
NAME,
X,
I,
#{item}

from ST_TCSCATTROUT T
where T.NAME||T.CASE_NO =#{id}
<foreach collection="nameNo" item="Nitem" index="index" open="(" separator="," close=")">
#{Nitem}
</foreach>
</foreach>
</insert>
...全文
1421 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
丶雨过天晴 2014-09-16
  • 打赏
  • 举报
回复
我上面代码是贴错了,有些代码注释了 ,已经解决 是eclipse编译问题。下面代码可以用 均分吧 where T.NAME||T.CASE_NO||T.BUSREF <!-- = #{id} --> in <foreach collection="nameNo" item="Nitem" index="index" open="(" separator="," close=")"> #{Nitem} </foreach>
我就是大神 2014-09-15
  • 打赏
  • 举报
回复
 <!--批量插入一个list的数据-->
    <update id="ListInsert" resultClass="int" parameterClass="ArrayList">
      <iterate conjunction=" " open="" close=""  >
        <![CDATA[  
           insert into JY_RestActivityComment(Id,Name) 
      values(  #[].Id#,#[].Name#)
        ]]>
      </iterate>
    </update>
我们用的ibatis,不太会,不知道这俩有啥区别。没看清楼主代码,我们是这么批量插入的
啊呀 2014-09-15
  • 打赏
  • 举报
回复
不会啊,帮顶
剑神一笑 2014-09-15
  • 打赏
  • 举报
回复
这个和直接循环调sql有啥区别 别折腾了
火楠哥 2014-09-15
  • 打赏
  • 举报
回复
我先google下mybatis是什么先
丶雨过天晴 2014-09-15
  • 打赏
  • 举报
回复
forever_loved 2014-09-15
  • 打赏
  • 举报
回复
首先你要知道 你的任务是把 id复制给T.CASE_NO, 也就是 T.CASE_NO=id 也就说 =id 是要在 foreach中实现 而id 不用说 #{Nitem} 就是这个东西 等号 用 separator="=" 用这个链接
forever_loved 2014-09-15
  • 打赏
  • 举报
回复
你先看看你控制台的sql语句对不对, 根据我的观察 where T.NAME||T.CASE_NO =#{id} <foreach collection="nameNo" item="Nitem" index="index" open="(" separator="," close=")"> #{Nitem} </foreach> 你这里的#{id} 完全没用 改成where T.NAME||T.CASE_NO <foreach collection="nameNo" item="Nitem" index="index" open="(" separator="=" close=")"> #{Nitem} </foreach> 试试
_Lunay 2014-09-15
  • 打赏
  • 举报
回复
没看清楼主代码
  • 打赏
  • 举报
回复
去SQL板块问问

50,530

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧