sql中in范围超过1000条的解决方案

一、背景
由于业务需求中,有场景使用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条,调用工具类对其进行处理
三、尾言
处理这样的方式有很多,展示了自己的一个处理方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值