使用Mybatis对Oracle做批量插入可以这样做:
<insert id="UseObjectTobatchImport" useGeneratedKeys="false"parameterType="java.util.List">
INSERT INTO "temp_pet"
("id","name","type","age","sex","master_id")
SELECT practice_pet_sequence.nextval, A.*
FROM(
<foreach collection="list"
item="pet" index="index"
separator="UNION ALL">
select '${pet.name}','${pet.type}','${pet.age}','${pet.sex}','${pet.masterID}' from dual
</foreach>
) A
</insert>
useGeneratedKeys="false" :
指定是否需要自动生成主键值。
mysql、sql Server 这些如果主键设定为自动增值,属性值就需要设置为true
Oracle 这种,主键不能自动增值,如果是通过sequence生成主键值,就把该属性设置为false
item="pet":
此属性是对foreach 的循环中使用的变量名,例如${pet.name}就是使用其name属性,使用#{pet.name}也行,只是根据需要指定其jdbcType值
separator="UNION ALL" :
可以不使用“ALL”但那样会屏蔽重复值,使用了“ALL”就不会屏蔽重复值。这点根据需要来做!