我的列表大小包含5000条记录我需要每次从列表中获取100条记录然后坚持到100条记录,每次最多5000条记录持续到DB如何实现这种逻辑?
private List<DoTempCustomers> doTempCustomers;
for(DoTempCustomers tempCustomers:doTempCustomers){
try {
temp=new TempCustomers();
BeanUtils.copyProperties(temp, doTemp);
getEntityManager().persist(temp);
}
我的上面的代码我坚持每个循环单独的5000条记录。
答案 0 :(得分:1)
尝试将列表拆分为多个部分,然后对每个子列表执行操作。如果您需要如何拆分列表,可以参考以下链接:How to split array list into equal parts?,它可以提供您的想法。
答案 1 :(得分:0)
答案 2 :(得分:0)
我在几天前解决了同样的问题。 我的示例代码每次都从列表中保存 1000条记录而不是500条。
public void persistData(){
int tempTblCount = tempTblCount(); // 5000 in your case
int loopCount = tempTblCount / 1000 + 1;
int limit = 1;
while (loopCount > 0) {
// here i get list of data from temp table having query limit;
List<MyCustomerVO> myCustomerList = getListFromTempTblData(limit);
for (iterate over your list) {
persist your record here;
}
}
limit = limit + 1000;
loopCount--;
}
public List<MyCustomerVO> getListFromTempTblData(int limit) {
List<MyCustomerVO> getTempTblData = null;
String sql = " select mobile_number,customer_no from temp_tbl limit "+limit+" , 1000 ";
execute query;
return list;
}