1、oracle 分别有两种方法:
第一种:
<insert id="batchInsert" parameterType="java.util.List"> INSERT INTO t_defect_fault_ratio(id, site, site_id, region, org_id, c_createdate, fault_num,defect_num) <foreach collection="list" item="item" index="index" separator="union all"> SELECT #{item.id,jdbcType=VARCHAR}, #{item.site,jdbcType=VARCHAR}, #{item.site_id,jdbcType=VARCHAR}, #{item.region,jdbcType=VARCHAR}, #{item.org_id,jdbcType=VARCHAR}, #{item.c_createdate,jdbcType=VARCHAR}, #{item.fault_num,jdbcType=NUMERIC}, #{item.defect_num,jdbcType=NUMERIC} from dual </foreach> </insert>
第二种 :
<insert id="batchInsert" parameterType="java.util.List"> INSERT ALL <foreach collection="list" item="item" index="index"> INTO t_defect_fault_ratio (id, site, site_id, region, org_id, c_createdate, fault_num,defect_num) VALUES ( #{item.id,jdbcType=VARCHAR}, #{item.site,jdbcType=VARCHAR}, #{item.site_id,jdbcType=VARCHAR}, #{item.region,jdbcType=VARCHAR}, #{item.org_id,jdbcType=VARCHAR}, #{item.c_createdate,jdbcType=VARCHAR}, #{item.fault_num,jdbcType=NUMERIC}, #{item.defect_num,jdbcType=NUMERIC} ) </foreach> select 1 from dual </insert>
mysql:
<insert id="batchInsert" parameterType="java.util.List"> INSERT INTO t_defect_fault_ratio(id, site, site_id, region, org_id, c_createdate, fault_num,defect_num) VALUES <foreach collection="list" item="item" index="index" separator=","> ( #{item.id,jdbcType=VARCHAR}, #{item.site,jdbcType=VARCHAR}, #{item.site_id,jdbcType=VARCHAR}, #{item.region,jdbcType=VARCHAR}, #{item.org_id,jdbcType=VARCHAR}, #{item.c_createdate,jdbcType=VARCHAR}, #{item.fault_num,jdbcType=VARCHAR}, #{item.defect_num,jdbcType=VARCHAR} ) </foreach> </insert>
以上代码亲测有效。