批量更新demo

因为批量更新数据库的时候,如果数据量太多,就会报错,这时候可以通过逻辑,批量更新,demo如下
@Test
    public void testbatch() {
        /**
         * 批量的值
         */
        int max = 11;
        List<String> list = new ArrayList<>();
        list.add("1");
        list.add("2");
        list.add("3");
        list.add("4");
        list.add("5");
        list.add("6");
        list.add("7");
        list.add("8");
        list.add("9");
        list.add("10");
        /**
         * 列表数量
         */
        int size = list.size();
        /**
         * 取模
         */
        int batchSize = size / max;
        int mode = size%max;

        if(mode==0){
            batchSize = batchSize-1;
        }
        for (int i = 0; i <=batchSize; i++) {
            if (i == batchSize) {
                print(list.subList(i * max, size));
            } else {
                print(list.subList(i * max, i * max + max));
            }
        }
        System.out.println(mode);
    }

    private void print(List<String> list) {
        for (String s : list) {
            System.out.println(s);
        }
        System.out.println("=================");
    }

 

 

第二个demo

@Test
    public void testsssss333(){
        int max = 5;
        List<String> list = new ArrayList<>();
        list.add("1");
        list.add("2");
        list.add("3");
        list.add("4");
        list.add("5");
        list.add("6");
        list.add("7");
        list.add("8");
        list.add("9");
        list.add("10");
        int size = list.size();

        List<String> execute = Lists.newArrayList();
        for (int start = 0; start < size; start += max) {
            int end = Math.min(start + max, size);
            execute = list.subList(start, end);

            if (CollectionUtils.isNotEmpty(execute)) {
                print(execute);
            }

        }
    }

 

posted @ 2017-05-17 11:13  dupang  阅读(350)  评论(0编辑  收藏  举报