mybatis中使用Oracle和mysql的批量插入区别

 在做excel导入的时候需要用到批量导入,以前没用过oracle数据库,使用过程中才发现mysql的写法在oracle中是不正确的。

 先介绍下foreach 中属性的表达意思:

1、 collection :collection属性的值有三个分别是list、array、map三种,分别对应的参数类型为:List、数组、map集合。

2、item : 表示在迭代过程中每一个元素的别名。

3、index :表示在迭代过程中每次迭代到的位置

4、open :前缀

5、close :后缀

6、separator :分隔符,表示迭代时每个元素之间以什么分隔

先上一下mybatis中foreach的代码:

<insert id="saveList" parameterType="java.util.List"> 
	  INSERT INTO mds_quota_detail(
	        id,
			mds_quota_id,
			serial,
			mds_item_id,
			item_code,
			item_name,
			normal_field,
			model_num,
			specs,
			quota,
			mds_unit_id,
			classify,
			remarks
			)
             VALUES
			<foreach collection="list" item="MdsQuotaDetail" index="index"  separator="," >
			  ( 
			  #{id},
			  #{mdsQuotaId},
			  #{serial},
			  #{itemId},
			  #{itemCode},
			  #{itemName},
			  #{normalField},
			  #{modelNum},
			  #{specs},
			  #{quota},
			  #{mdsUnitId},
			  #{classify},
			  #{remarks}
			  )
			</foreach>
	</insert>

oracle中foreach的代码:

<insert id="saveList" parameterType="java.util.List"> 
	  INSERT INTO mds_quota_detail(
	        id,
			mds_quota_id,
			serial,
			mds_item_id,
			item_code,
			item_name,
			normal_field,
			model_num,
			specs,
			quota,
			mds_unit_id,
			classify,
			remarks
			)
			<foreach collection="list" item="MdsQuotaDetail" index="index"  separator="UNION ALL" >
			  (
			  SELECT 
			  #{MdsQuotaDetail.id},
			  #{MdsQuotaDetail.mdsQuotaId},
			  #{MdsQuotaDetail.serial},
			  #{MdsQuotaDetail.itemId},
			  #{MdsQuotaDetail.itemCode},
			  #{MdsQuotaDetail.itemName},
			  #{MdsQuotaDetail.normalField},
			  #{MdsQuotaDetail.modelNum},
			  #{MdsQuotaDetail.specs},
			  #{MdsQuotaDetail.quota},
			  #{MdsQuotaDetail.mdsUnitId},
			  #{MdsQuotaDetail.classify},
			  #{MdsQuotaDetail.remarks}
			  FROM dual
			  )
			</foreach>
	</insert>

总结:1、在oracle中是没有values的。

          2、在oracle中separator的值为union all,mysq'中是","。

         3、在oracle中foreach中使用SELECT  ...  FROM dual。

        4、在foreach中#{属性值},oracle中必须是item的值点属性。

如有哪里不对的地方,欢迎在评论里指出

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值