[SQL] ApacheCommons ListUtils partition

ArrayList 를 일정 크기로 분할할 때, 
sublist(int fromIndex, int toIndex) 를 사용해도 되지만,  리스트 사이즈내에서 fromIndex, toIndex구하는 로직을 추가로 짜야한다.

Apache Commons 라이브러리의 partition 메서드를 사용하면 아주 간편하게 List를 사이즈에 맞게 쪼갤 수 있다.

https://commons.apache.org/proper/commons-collections/apidocs/org/apache/commons/collections4/ListUtils.html

ex) Oracle Select IN절 값이 복수인 쿼리에서 IN절 최대 허용값이 1000개 이므로,
List를 1000건씩 나누어 Select한다고 했을때, 아래와 같이 사용할 수 있다.

int batch_size = 1000;
List<List<String>> batchMemberList =  ListUtils.partition(memberList, batch_size);
for(int i=0; i<batchMemberList.size(); i++){
   targetList.addAll(couponMngDao.selectTarget(batchMemberList.get(i)));
}

 

You may also like...

답글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.