批量导入对于我们很常用。写法也根据不同数据库,有不一样的地方。
下边介绍mybatis
分别连接Mysql
和Oracle
库的时候,在mapper.xml
中的写法。
1、mysql 批量导入写法
mysql
库的批量导入sql
类似如下:
`insert into [表名] (col1,col2) values (val1,val2),(val1,val2)`
举例如下:
<select id="addBatchLzdkbList" parameterType="znxd.tdlz.model.lz.Lzdkb">
insert into lzdkb (YWH,DKBM,CBFBM,CBFMC,XZCODE,C1,C2,C3) values
<foreach collection="list" item="item" index="index" open="" separator="," close="">
(#{item.ywh,jdbcType=VARCHAR}, #{item.dkbm,jdbcType=VARCHAR},
#{item.cbfbm,jdbcType=VARCHAR}, #{item.cbfmc,jdbcType=VARCHAR}, #{item.xzcode,jdbcType=VARCHAR},
#{item.c1,jdbcType=VARCHAR}, #{item.c2,jdbcType=VARCHAR}, #{item.c3,jdbcType=VARCHAR})
</foreach>
</select>
2、oracle批量导入写法
oracle
库的批量导入sql
,大概如下:
insert into [表名] (col1,col2)
select a.* from (
select val1,val2 from dual
union all
select val1,val2 from dual
) a
举例如下:
<insert id="insertBatch" parameterType="java.util.List">
insert into TDTG
(ID, CBFBM, CBFMC,
CBFZJHM, DKMC)
SELECT A.* FROM(
<foreach collection="list" item="item" index="index" separator="UNION ALL">
SELECT
#{item.id,jdbcType=DECIMAL}, #{item.cbfbm,jdbcType=VARCHAR},
#{item.cbfmc,jdbcType=VARCHAR},#{item.cbfzjhm,jdbcType=VARCHAR},
#{item.dkmc,jdbcType=VARCHAR}
FROM dual
</foreach>
)A
</insert>
为了提高导入速度,可能在批量导入的时候,分批导入,这样就需要截取集合。