场景:mybatis +sqlserver +insert+foreach
差别:
foreach在外层和内存
separator符号不一样
效率:亲测第二种速度快
遗留:
不知道mysql是否类似,可以确认mysql支持第一种,但需要开启allowMultiQueries=true
1、等于是执行多条语句
<foreach collection="list" item="item" index="index" separator=";">
insert into GRJX_JJFPMX ( JJFPID, FPDXLX,
FPDX, ZTBM,ztfpzt, GZL, ZLXS,
GWQZ, P1Z, BZXS, JJ,
PFZXBZ, CJRQ, CJR, XGRQ,
XGR, BZ, JLZT,YGZL,ZTJC,FPDXMC,KSZRS,TDBM,TDMC,TBJE,JSJX)
values
(#{item.jjfpid,jdbcType=INTEGER}, #{item.fpdxlx,jdbcType=CHAR},
#{item.fpdx,jdbcType=VARCHAR}, #{item.ztbm,jdbcType=VARCHAR},#{item.ztfpzt,jdbcType=VARCHAR}, #{item.gzl,jdbcType=NUMERIC}, #{item.zlxs,jdbcType=NUMERIC},
#{item.gwqz,jdbcType=NUMERIC}, #{item.p1z,jdbcType=NUMERIC}, #{item.bzxs,jdbcType=NUMERIC}, #{item.jj,jdbcType=NUMERIC},
#{item.pfzxbz,jdbcType=CHAR},getdate(), #{item.cjr,jdbcType=VARCHAR}, #{item.xgrq,jdbcType=TIMESTAMP},
#{item.xgr,jdbcType=VARCHAR}, #{item.bz,jdbcType=VARCHAR}, #{item.jlzt,jdbcType=CHAR},#{item.ygzl,jdbcType=NUMERIC},
#{item.ztjc,jdbcType=CHAR}, #{item.fpdxmc,jdbcType=CHAR},#{item.kszrs,jdbcType=CHAR},#{item.tdbm,jdbcType=CHAR},#{item.tdmc,jdbcType=CHAR}, #{item.tbje,jdbcType=NUMERIC}, #{item.jsjx,jdbcType=NUMERIC})
</foreach>
2、
insert into GRJX_JJFPMX ( JJFPID, FPDXLX,
FPDX, ZTBM,ztfpzt, GZL, ZLXS,
GWQZ, P1Z, BZXS, JJ,
PFZXBZ, CJRQ, CJR, XGRQ,
XGR, BZ, JLZT,YGZL,ZTJC,FPDXMC,KSZRS,TDBM,TDMC,TBJE,JSJX)
values
<foreach collection="list" item="item" index="index" separator=",">
(#{item.jjfpid,jdbcType=INTEGER}, #{item.fpdxlx,jdbcType=CHAR},
#{item.fpdx,jdbcType=VARCHAR}, #{item.ztbm,jdbcType=VARCHAR},#{item.ztfpzt,jdbcType=VARCHAR}, #{item.gzl,jdbcType=NUMERIC}, #{item.zlxs,jdbcType=NUMERIC},
#{item.gwqz,jdbcType=NUMERIC}, #{item.p1z,jdbcType=NUMERIC}, #{item.bzxs,jdbcType=NUMERIC}, #{item.jj,jdbcType=NUMERIC},
#{item.pfzxbz,jdbcType=CHAR},getdate(), #{item.cjr,jdbcType=VARCHAR}, #{item.xgrq,jdbcType=TIMESTAMP},
#{item.xgr,jdbcType=VARCHAR}, #{item.bz,jdbcType=VARCHAR}, #{item.jlzt,jdbcType=CHAR},#{item.ygzl,jdbcType=NUMERIC},
#{item.ztjc,jdbcType=CHAR}, #{item.fpdxmc,jdbcType=CHAR},#{item.kszrs,jdbcType=CHAR},#{item.tdbm,jdbcType=CHAR},#{item.tdmc,jdbcType=CHAR}, #{item.tbje,jdbcType=NUMERIC}, #{item.jsjx,jdbcType=NUMERIC})
</foreach>
本文探讨了使用MyBatis框架结合SQL Server进行批量数据插入的两种方法,一种通过拼接多条INSERT语句,另一种则利用单条语句插入多行数据。实测表明,后者在效率上更胜一筹。文章还提及MySQL环境下类似操作的支持情况。

544

被折叠的 条评论
为什么被折叠?



