java处理oracle数据库in查询超过1000条的方法

📅 2026/7/9 8:14:19 👁️ 阅读次数 📝 编程学习
java处理oracle数据库in查询超过1000条的方法

oracle处理in查询超过1000条报错问题

    • 1 通过Lists.partition分批
    • 2 分批查询

1 通过Lists.partition分批

importcom.google.common.collect.Lists;privatevoidchangeBomHandle(List<EBomTcDTO>eBomTcDTOList){// 1. 收集bomIdList<String>bomIds=eBomTcDTOList.stream().map(EBomTcDTO::getBomid).filter(Objects::nonNull).distinct().collect(Collectors.toList());if(bomIds.isEmpty()){return;}// 2. 使用Guava的Lists.partition分批List<EBomTc>result=newArrayList<>();List<List<String>>partitions=Lists.partition(bomIds,1000);for(List<String>partition:partitions){List<EBomTc>batchResult=eBomTcRepository.findAllByBomidIn(partition);result.addAll(batchResult);}// 3. 后续业务处理...}

2 分批查询

privatevoidchangeBomHandle(List<EBomTcDTO>eBomTcDTOList){// 1. 收集所有bomIdList<String>bomIds=eBomTcDTOList.stream().map(EBomTcDTO::getBomid).filter(Objects::nonNull)// 过滤null值.distinct()// 去重(可选).collect(Collectors.toList());if(bomIds.isEmpty()){return;}// 2. 分批查询,每批最多1000个List<EBomTc>result=newArrayList<>();intbatchSize=1000;for(inti=0;i<bomIds.size();i+=batchSize){intend=Math.min(i+batchSize,bomIds.size());List<String>batchIds=bomIds.subList(i,end);List<EBomTc>batchResult=eBomTcRepository.findAllByBomidIn(batchIds);result.addAll(batchResult);}}