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的值点属性。

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

猜你喜欢

转载自blog.csdn.net/taojin12/article/details/82713167