我们在用oracle 数据库 查询时,如果where 字句 用in ,那么in里面的内容不能超过1000(可以等于1000)。

但是实际使用时,我们可能查询修改等超过1000条。

那么可以写一个通用的方法进行分割:

 1 public static <E> List<List<E>> splitList (List<E> targetList,Integer splitSize){
 2         if(targetList == null) return null;
 3         Integer size = targetList.size();
 4         List<List<E>> resultList = new ArrayList<List<E>>();
 5         if(size <= splitSize) {
 6             resultList.add(targetList);
 7         } else {
 8             for (int i = 0; i < size; i += splitSize) {
 9                 //用于限制最后一部分size小于splitSize的list
10                 Integer limit = i+splitSize;
11                 if(limit > size){
12                     limit = size;
13                 }
14                 resultList.add(targetList.subList(i, limit));
15             }
16         }
17         return resultList;
18     }