当有时候我们需要对表进行大批量插入语句,这个时候如果一次拼接数据量过多导致慢查询。单个批次执行的性能会出现较大的下降,出现大量慢查询,并发线程堆积,CPU上升出现瓶颈。这个时候可以通过分批插入数据库的方案。这里写一个分批的工具类。
public class SplitUtils { public static <T> List<List<T>> splitList(List<T> list, int split) { int end = 0; List<T> tempLst = null; List<List<T>> result = new ArrayList<>(); for (int start = 0, size = list.size(); start < size; start += split) { end = start + split > size ? size : start + split; tempLst= list.subList(start, end); result.add(tempLst); } return result; } public static void main(String[] args) { ArrayList<String> strings = new ArrayList<>(); strings.add("sdf1"); strings.add("sdf2"); strings.add("sdf3"); strings.add("sdf4"); List<List<String>> lists = splitList(strings, 3); for (List<String> list : lists) { System.out.println(list); } } }