Java ibatis批量insert_Java使用iBatis批量插入数据到Oracle数据库

Java使用iBatis批量插入数据到Oracle数据库

因为我们的数据跨库(mysql,oracle),单独取数据的话需要遍历好多遍,所以就想着先从mysql数据库中取出来的数据然后在oracle数据库中建立结果集对应的临时表,先插入然后再统一查询(中间就节省了遍历再重组数据的时间了)。

1.首先我们从mysql数据库中查询出对应数据

sql:

select name,age,sex from T_user

]]>

2.在oracle数据库中建立对应的临时表,(需要提前在对应的数据库中执行)

drop table report_user ;

create table report_user

(

name VARCHAR2(20),

age VARCHAR2(10),

sex VARCHAR2(6)

);

3.插入的Dao定义,需要注意批量插入数据会有量的限制 ,这里定义每次插入1000条数据

参数类型为List,参数名为: userList

对应sqlmap的方法id为: insertReportUsert2Oracle

/*Test 20191219 batch insert data*/

public Object insertReportUsert2Oracle(List userList){

Map parm=new HashMap();

int len = userList.size()/1000 +1;

int modlen = userList.size()%1000 ;

System.err.println("len="+len);

System.err.println("modlen="+modlen);

int start = 0;

int end = 1000;

for(int i=0;i

System.err.println(i+"----start="+start);

System.err.println(i+"----end="+end);

List tmpUserList = userList.subList(start, end);

parm.put("userList", tmpUserList);

st.insert("report.insertReportUsert2Oracle", parm);

if(i==(len-2)){

end +=modlen;

}else{

end +=1000;

}

start +=1000;

}

return "insert";

}

4.批量插入oarcle数据库的脚本信息

这里用的关键字是 union all,且记住从List里面获取数据的格式为 userList[].xxx

INSERT INTO report_user

(

name

,age

,sex

)

(

select

#userList[].name#,

#userList[].age#,

#userList[].sex#

from dual

)

5.单元测试

@Test

public void insertReportUsert2OracleTest() throws IMException{

long starttime = System.currentTimeMillis();

System.err.println("===========starttime = " +starttime);

userDao.insertReportUsert2Oracle();

long endtime = System.currentTimeMillis();

System.err.println("===========endtime = " +endtime);

System.err.println("=========== daycount = " + ((endtime-starttime)/1000)+" s");

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值