批量更新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); } } }