因为批量更新数据库的时候,如果数据量太多,就会报错,这时候可以通过逻辑,批量更新,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);
}
}
}