ibatis、hiberate之批量插入

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>//关闭二级缓存

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-06 07:56:06

ibatis、hiberate之批量插入的相关文章

IBatis批量插入数据

IBatis插入注意,数据量比较多的花,需要分批插入,策略是dao里面控制插入批次,mapper里面批量插入即可 @Override public Long insertBatch(List<WaiterDO> list) throws Exception { //每批次插入数量 int batchCount = 3; //游标 int index = 0; //批次 int batchNum = 1; for(;;){ if(index+batchCount>=list.size())

ibatis 批量插入oracle总结

1. 使用批量插入最先想到如下的插入语句 insert into a (id,name) values('','') ,('','') 但是 oracle 并不支持这种写法 然后查询得知可以使用如下写法 insert all into a(id,name) values('','') into a(id,name) values('','') (注:可以一次插入一个表也可以多个表) 但是这种方式有一种限制,就是 行数乘以列数不能大于1000(我没有验证),而且这种方式据说效率不高(我没有验证)

Mybatis+Oracle --批量插入

Oracle自增长ID: 参考博客:Oracle数据库创建表ID字段的自动递增 mybatis语句 参考博客:点评 ibatis+oracle 批量插入的三种方法. 参考第三种 参考博客:mybatis中批量插入的两种方式(高效插入) Oracle自增长ID,如下: 序列: CREATE SEQUENCE "ENERGY"."ROLE_OBJECT_SEQ" MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCRE

Java通过Mybatis实现批量插入数据到Oracle中

最近项目中遇到一个问题:导入数据到后台并将数据插入到数据库中,导入的数据量有上万条数据,考虑采用批量插入数据的方式: 结合网上资料,写了个小demo,文章末尾附上demo下载地址 1.新建项目:项目目录结构如下图所示,添加相应的jar包 2.新建数据库表:ACCOUNT_INFO 1 CREATE TABLE ACCOUNT_INFO ( 2 "ID" NUMBER(12) NOT NULL , 3 "USERNAME" VARCHAR2(64 BYTE) NULL

mybatis批量插入数据到oracle

mybatis 批量插入数据到oracle报 ”java.sql.SQLException: ORA-00933: SQL 命令未正确结束“  错误解决方法 oracle批量插入使用 insert all into table(...) values(...) into table(...) values(...) select * from dual; 语句来解决,但一直报如下错误 ### The error may involve ApplaudDaoImpl.addList-Inline

Mybatis批量插入返回自增主键(转)

我们都知道Mybatis在插入单条数据的时候有两种方式返回自增主键: 1.对于支持生成自增主键的数据库:useGenerateKeys和keyProperty. 2.不支持生成自增主键的数据库:<selectKey>. 但是怎对批量插入数据返回自增主键的解决方式网上看到的还是比较少,至少百度的结果比较少. Mybatis官网资料提供如下: First, if your database supports auto-generated key fields (e.g. MySQL and SQL

oracle 在xml中批量插入,批量修改及多组条件查询

最近公司用ibatis开发项目,本来可以用存储过程处理批量插入,批量修改及多组条件查询:但由于使用模块相对较小,暂时就在xml中配置,以前没有在xml做过类似处理,有必要记录一下:好了,代码如下: <!-- 批量插入 --> <insert id="saveNotificationPushInfo" parameterClass="java.util.List"> <![CDATA[INSERT ALL]]> <iterat

Mybatis 3+Mysql 实现批量插入

终于实现了ibatis的批量插入,此方法插入3000条数据,比单条插入可以节省一半的时间 XML代码: <insert id="insertBatch" parameterType="ArrayList"> insert intouser(id,account,password,active,status,name,gender,active_date,expiry_date,type,remark,group_id,disable,exam_numbe

mysql使用存储过程&amp;函数实现批量插入

写这边文章的目的,是想结合mysql 存储过程+函数完成一个批量删除的功能吧...正好也好加深下对procedure和function的熟练操作吧...废话不多说,我就直接上表结构啦哈,如下: create table dept( id int unsigned primary key auto_increment, deptno mediumint unsigned not null default 0, dname varchar(20) not null default "",