网上百度一下,发现各种各样的版本,真的是各种试,现在就来分享一下我运行过程中是如何处理的吧
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,这种方式几乎可以应付你所有的情况
@Autowired
private SqlSessionTemplate sqlSession;
public void saveBatch(List<TBsImpNews> modelList) {
SqlSession session =sqlSession

本文分享了在实际运行中,针对Spring和Mybatis集成后如何进行批处理的经验,通过具体的insert语句展示了如何批量插入数据。
最低0.47元/天 解锁文章
1670

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



