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>//关闭二级缓存
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/qw463800202/article/details/47251215