Mybatis foreach 批量插入

   在mybatis中可以使用foreach标签做批量插入和更新操作,以批量插入为例:

<insert id="insertMsg" parameterType="xz.hr.domain.ResumeMessage">INSERT INTO hr_resume_message (id,content,accept_user,create_by,create_date)
     VALUES
<foreach collection="ids" item="id" separator="," index="index"> (#{id} #{content}, #{id}, #{createBy}, sysdate) </foreach> </insert>

collection属性填写参数中对应的集合变量,我这里是实体中的ids属性为一个集合。

需要注意的是,oracle数据的写法不一样,它不支持 insert tableName (id,name) values (xx,xx),(xx,xx)写法,正确的姿势如下:

1.需要取掉values

2.separator 要改为union all

3.foreach标签中没有括号

4.另外如果是使用序列写法也要变,要把序列单独拿出来,否则要报错:

//不使用序列
<insert id="save" parameterType="UserRole">
  insert into sys_user_role
  (user_id, role_id)
  <foreach collection="roleIdList" item="item" index="index" separator="UNION ALL" >
    SELECT
    #{userId}, 
    #{item}
    FROM dual
  </foreach>
</insert>

 


//使用序列
<
insert id="insertMsg" parameterType="xz.hr.domain.ResumeMessage"> INSERT INTO hr_resume_message (id,content,accept_user,create_by,create_date) SELECT HR_PUB_SEQ.nextval,A.* from ( <foreach collection="ids" item="id" separator="UNION ALL" index="index"> SELECT #{content}, #{id}, #{createBy}, sysdate FROM DUAL </foreach> ) A </insert>

 

转载于:https://www.cnblogs.com/KeepYongth/p/8942049.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值