【发布时间】:2020-11-07 08:38:55
【问题描述】:
这段代码耗时太长:
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) {}
}
有什么办法可以避免这个for循环,并且仍然删除firstIndex-1和lastIndex之间具有loggerId.getValue()列值的所有内容?
来自以下cmets的建议:
List<DataLogg> selectedLogger = dataLoggRepository.findByLoggerId(loggerId.getValue());
List<DataLogg> deleteThese = new ArrayList<DataLogg>();
for(int i = firstIndex-1; i < lastIndex; i++) {
try {
DataLogg dataLogg = selectedLogger.get(i);
deleteThese.add(dataLogg);
} catch(Exception e1) {}
}
dataLoggRepository.deleteInBatch(deleteThese);
【问题讨论】:
-
评论不用于扩展讨论;这个对话是moved to chat。
标签: java mysql sql spring-boot jpa