一、背景
由于业务需求中,有场景使用sql查询会超过1000条数据,将其中一种解决方案记录下来。
二、话不多说,上工具方法。
public class ListUtils {
/**
* 截取list集合,返回list集合
* @param tList (需要截取的集合)
* @param subNum (每次截取的数量)
* @return
*/
public static List<List> subList(List tList, Integer subNum) {
// 新的截取到的list集合
List<List> tNewList = new ArrayList<List>();
// 要截取的下标上限
Integer priIndex = 0;
// 要截取的下标下限
Integer lastIndex = 0;
// 查询出来list的总数目
Integer totalNum = tList.size();
// 总共需要插入的次数
Integer insertTimes = totalNum / subNum;
List subNewList = new ArrayList();
for (int i = 0; i <= insertTimes; i++) {
priIndex = subNum * i;
lastIndex = priIndex + subNum;
// 判断是否是最后一次
if (i == insertTimes) {
subNewList = tList.subList(priIndex, tList.size());
} else {
// 非最后一次
subNewList = tList.subList(priIndex, lastIndex);
}
if (subNewList.size() > 0) {
//logger.info(“开始将截取的list放入新的list中”);
tNewList.add(subNewList);
}
}
return tNewList;
}
}
这里使用了List进行对查询条件的封装。
引用:
if (customerIds.size() > 1000) {
List<List> customerIdList = ListUtils.subList(customerIds, 1000);
}
这里设置了1000的阈值,如果id超过1000条,调用工具类对其进行处理
三、尾言
处理这样的方式有很多,展示了自己的一个处理方法。