SqlExecuteUtil.java 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. package com.diagbot.util;
  2. import java.util.ArrayList;
  3. import java.util.LinkedList;
  4. import java.util.List;
  5. /**
  6. * @Description: sql批量执行时,参数分组后按组提交,避免游标、数据量超过限制
  7. * @author: gaodm
  8. * @time: 2018/4/20 11:27
  9. */
  10. public class SqlExecuteUtil {
  11. /**
  12. * sql批量执行时,参数分组后按组提交,避免游标、数据量超过限制
  13. *
  14. * @param originList 原始参数列表
  15. * @param capacity 分组后每组的大小
  16. * @return List<List < T>> 分组后的参数列表
  17. */
  18. public static <T> List<List<T>> divideList(List<T> originList, int capacity) {
  19. List<List<T>> list = new LinkedList<>();
  20. int originListSize = originList.size();
  21. int length = originListSize / capacity;
  22. if (length == 0) {
  23. list.add(originList);
  24. return list;
  25. }
  26. if (originListSize % capacity > 0) {
  27. length = length + 1;
  28. }
  29. for (int i = 0; i < length; i++) {
  30. int fromIndex = i * capacity;
  31. int toIndex = (i + 1) * capacity > originListSize ? originListSize : (i + 1) * capacity;
  32. list.add(new ArrayList<T>(originList.subList(fromIndex, toIndex)));
  33. }
  34. return list;
  35. }
  36. }