mybatis sqlserver insert foreach 两种写法

本文探讨了使用MyBatis框架结合SQL Server进行批量数据插入的两种方法,一种通过拼接多条INSERT语句,另一种则利用单条语句插入多行数据。实测表明,后者在效率上更胜一筹。文章还提及MySQL环境下类似操作的支持情况。

场景: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>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值