如何从List中坚持100条记录

时间:2012-12-06 10:14:32

标签: java hibernate loops jpa persist

我的列表大小包含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条记录。

3 个答案:

答案 0 :(得分:1)

尝试将列表拆分为多个部分,然后对每个子列表执行操作。如果您需要如何拆分列表,可以参考以下链接:How to split array list into equal parts?,它可以提供您的想法。

答案 1 :(得分:0)

您可以使用subList的{​​{1}}方法获取List的较小视图

List

参考Javadoc for List#subList

答案 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;

    }