先把查询到的未知的或者已经知道的in查询条件集合instockids,算出个数。然后使用下列代码拆成自定义的长度,temp就是拆分的最大长度。并且计算次数分开查询数据最后拼接加起来就行。
int size = instockIds.size(); int temp=500; if(size<temp){ temp=size; } List<DetailPurchaseOrderVo> itemList2 =new ArrayList<>(); int a=0; for(int i=0;i<=size/500;i++) { List<String> objects1 = new ArrayList<>(); List<DetailPurchaseOrderVo> stockList2 = new ArrayList<>(); for (int j = a; j < temp; j++) { if (instockIds.get(j) != null) { objects1.add(instockIds.get(j)); stockList2.add(stockList.get(j)); a = j + 1; } else { break; } } if ((size / 500) == i+1 ) { temp = temp + (size % 500); } else { temp = temp + 500; } //注意这里需要自己调用查询代码直接使用,直接把查询objects1自己组装的in条件丢进查询。 //返回list数据之后就遍历放入一个总的list中再返回给前端。 List<DetailPurchaseOrderVo> detailPurchaseOrderVos = getstockListDatile(map, goodsParams, objects1, stockList2); if(detailPurchaseOrderVos!=null) { //如果查询不为空就遍历添加数据 for (DetailPurchaseOrderVo det : detailPurchaseOrderVos) { itemList2.add(det); } } }
}