下面方法适用于大量(百万级别的List数据),插入到Oracle表中
private static final int OPENID_PHONE_NUM = 800; //经实践,800一批插入相对较快,这个可以随便定义
private void insertPMeSendToPhoneInfo(List<PMeSendToPhone> phoneList){
int listSize=phoneList.size();
int toIndex=OPENID_PHONE_NUM;
for(int i = 0;i<phoneList.size();i+=OPENID_PHONE_NUM){
if(i+OPENID_PHONE_NUM>listSize){//作用为toIndex最后没有800条数据则剩余几条newList中就装几条
toIndex=listSize-i;
}
List<PMeSendToPhone> newPMeSendToPhoneInfo = phoneList.subList(i,i+toIndex);
//批量插入
pMeSendToPhoneMapper.batchInsertPMePhoneData(newPMeSendToPhoneInfo);
}
}
/** 接口方法定义 *批量插入 * @param newPMeSendToPhoneInfo * @return */ int batchInsertPMePhoneData(@Param(value = "list") List<PMeSendToPhone> newPMeSendToPhoneInfo);
mybits配置文件定义方法
<insert id="batchInsertPMePhoneData" parameterType="java.util.List">
begin
<foreach collection="list" item="item" index="index">
insert into P_ME_SEND_TO_PHONE (PHONEID, PHONE, OPENID, EXTEND_1,EXTEND_2, EXTEND_3)
values(
SEQ_P_ME_SEND_TO_PHONE.nextval,
#{item.phone,jdbcType=VARCHAR},
#{item.openid,jdbcType=VARCHAR},
#{item.extend1,jdbcType=VARCHAR},
#{item.extend2,jdbcType=VARCHAR},
#{item.extend3,jdbcType=VARCHAR}
);
</foreach>
end;
</insert>
批量插入Oracle的高效方法
本文介绍了一种将大量数据(百万级别)高效插入Oracle数据库的方法。通过将数据分割成小批次(每批800条)进行批量插入,提高了数据处理效率。使用MyBatis框架实现,并详细展示了具体的代码实现及myBatis配置。
704





