JAVA客户端传递对象数组到Oracle存储过程做大数据量插入(二)

2014-11-24 07:11:41 · 作者: · 浏览: 1
_struct.setAttribute(1, this.losingLECode);
return _struct.toDatum(conn, _ORACLE_TYPE_NAME);
}
public UkbnovCTCOrder1(String losingLEName, String losingLECode) {
this();
this.losingLEName = losingLEName;
this.losingLECode = losingLECode;
}
....
调用的时候不需要再做Java bean 到Oracle "AS OBJECT"数据类型的mapping,只需要做数组类型的mapping,如下:
Connection con = null;
CallableStatement cstmt = null;
try {
con = OracleConnection.getConn();
System.out.println(new Date());
List orderList = new ArrayList();
for(int i=0;i<100000;i++){
orderList.add(new UkbnovCTCOrder1("losingLEName"+i,"losingLECode+"+i));
}
ArrayDescriptor tabDesc = ArrayDescriptor.createDescriptor("BUT_UKBNOV_CTC_ORDER_TAB", con);
ARRAY vArray = new ARRAY(tabDesc, con, orderList.toArray());

cstmt = con.prepareCall("{call bulkInsertCTDORDER( )}");
cstmt.setArray(1, vArray);
cstmt.execute();
con.commit();
上面的示例在插入10万条记录只用了5秒(当然也和这里的表结构字段少有关系).

摘自 kkdelta