Java 如何删除具有特定列和行号的所有值?

Java 如何删除具有特定列和行号的所有值?,java,mysql,sql,spring-boot,jpa,Java,Mysql,Sql,Spring Boot,Jpa,此代码花费的时间太长: List<DataLogg> selectedLogger = dataLoggRepository.findByLoggerId(loggerId.getValue()); for(int i = firstIndex-1; i < lastIndex; i++) { try { DataLogg dataLogg = selectedLogger.get(i); if (dataLogg != null) {

此代码花费的时间太长:

List<DataLogg> selectedLogger = dataLoggRepository.findByLoggerId(loggerId.getValue());
for(int i = firstIndex-1; i < lastIndex; i++) {
    try {
        DataLogg dataLogg = selectedLogger.get(i);
        if (dataLogg != null) {
            dataLoggRepository.delete(dataLogg);
        }
    } catch(Exception e1) {}
}
使用java流API

selectedLogger
.stream()
.skip(firstIndex-2)
.limit(lastIndex-firstIndex+1)
.filter(loggerId.getValue()!=null)
.map(()->{dataLoggRepository.delete(dataLogg);});
使用java流API

selectedLogger
.stream()
.skip(firstIndex-2)
.limit(lastIndex-firstIndex+1)
.filter(loggerId.getValue()!=null)
.map(()->{dataLoggRepository.delete(dataLogg);});

只是另一种写它的小方法

List<DataLogg> selectedLogger = dataLoggRepository.findByLoggerId(loggerId.getValue());
List<DataLogg> deleteThese = IntStream.range(firstIndex - 1, lastIndex).mapToObj(i -> selectedLogger.get(i)).collect(Collectors.toList());
dataLoggRepository.deleteInBatch(deleteThese);
List selectedLogger=dataLoggRepository.findByLoggerId(loggerId.getValue());
List deletetethes=IntStream.range(firstIndex-1,lastIndex).mapToObj(i->selectedLogger.get(i)).collect(Collectors.toList());
dataLoggRepository.deleteInBatch(删除这些);

这只是另一种编写它的小方法

List<DataLogg> selectedLogger = dataLoggRepository.findByLoggerId(loggerId.getValue());
List<DataLogg> deleteThese = IntStream.range(firstIndex - 1, lastIndex).mapToObj(i -> selectedLogger.get(i)).collect(Collectors.toList());
dataLoggRepository.deleteInBatch(deleteThese);
List selectedLogger=dataLoggRepository.findByLoggerId(loggerId.getValue());
List deletetethes=IntStream.range(firstIndex-1,lastIndex).mapToObj(i->selectedLogger.get(i)).collect(Collectors.toList());
dataLoggRepository.deleteInBatch(删除这些);


这与他已经做的相同,只是在另一种语法中。为什么应该是fasterbe use parallelStream()将是fasterNo。因为您将生成许多Delete语句。这应该在一个语句中完成哈哈哈,如果循环是ban,那么过滤器和deete逻辑应该在DAO层中编写,DAO层在findByLoggerId()方法中。这与他已经在另一个语法中做的相同。为什么应该是fasterbe use parallelStream()将是fasterNo。因为您将生成许多Delete语句。这应该在一个语句中完成哈哈哈,如果循环是ban,那么过滤器和deete逻辑应该在DAO层中编写,DAO层在findByLoggerId()方法中。谢谢,但是有一个更好的解决方案:)谢谢,但是有一个更好的解决方案:)注释不用于扩展讨论;此对话已结束。评论不用于扩展讨论;这段对话一直是。流比简单的for循环快吗?当你阅读它时,它更流畅,从技术上讲,它更快。但是小心点,我的伤口可能需要一些适应。好的。谢谢我觉得流看起来很奇怪,C风格的for循环看起来也更容易阅读。是的,但是流更快,可以并行化。“DataLogg不能转换为int”我有一个错误。流比简单的for循环快吗?当你阅读它时,它更流畅,从技术上讲,它更快。但是小心点,我的伤口可能需要一些适应。好的。谢谢我认为流看起来很奇怪,C风格的for循环看起来也更容易阅读。是的,但流更快,可以并行化。“DataLogg不能转换为int”我得到一个错误。