网上百度一下,发现各种各样的版本,真的是各种试,现在就来分享一下我运行过程中是如何处理的吧
1、首先一种基本的批处理是采用union all 拼接sql,导致问题sql过长,耗时,性能不好,且达到一定量会超出sql长度限制,简单的批处理可以应付。
<insert id="insertMethodOne" parameterType="List">
insert into gdgk_test_user(id,name,password) (
<foreach collection="list" item="item" index="index" separator="union all">
select #{item.id,jdbcType=VARCHAR},#{item.name,jdbcType=VARCHAR},#{item.password,jdbcType=VARCHAR} from dual
</foreach>
)
</insert>
一般20字段以内的表新增,数据2000条以内可用,经过测试,但是,这个是非常重要,对于数据表字段中存在大数据如:CLOB类型,就不能使用这种批量新增方法。
2、采用dao层循环,得到sqlsession 统一commit,这种方式几乎可以应付你所有的情况
@A