ibatis批量插入
首先dao层要传递一个list过来,比如是一个user(list数据)
接着xml文件中这么配置,注意类型是"java.util.List,
<insert id="insert" parameterClass="java.util.List">
insert into user(acount,pwd)
<iterate conjunction=",">
(#user[].acount#,#user[].pwd#)
</iterate>
</insert>
hiberate批量插入
hiberate的批量插入其实就是循环插入语句,把语句放在事务中提交,如下
Configuration config = new Configuration();
config.configure();
SessionFactory factory = config.buildSessionFactory();
Session session = factory.openSession();
Transaction tx = session.beginTransaction();
for ( int i=0; i<100000; i++ ) { //插入10万条数据
User p = new User();
p.setAcount("123456");
p.setPwd(i.toString()) ;
session.save(person);
}
tx.commit();
session.close();
但是如果这样做的话一般hiberate中会报错的,因为hiberate的默认机制是把没有提交的数据放在缓存中,但是缓存一般放不了非常多的数据,这个时候可以在spring整合的hiberate配置文件中加入如下代码
<property name="hibernate.jdbc.batch_size">100</property>//每100条语句提交一次
<property name="hiberante.cache.use_second_level_cache">false</property>//关闭二级缓存
本文介绍了使用ibatis和Hibernate进行批量数据插入的方法。对于ibatis,通过在XML配置文件中利用<iterate>标签实现对List集合的批量插入操作;而Hibernate则通过循环保存实体并在事务中提交的方式完成批量插入,同时为避免缓存溢出问题,配置了每100条语句提交一次。
1万+

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



