java - 如何删除具有特定列号和行号的所有值?
问题描述
这段代码耗时太长:
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()
?
来自以下评论的建议:
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);
解决方案
@Query(value = "Delete from dataLoggTable where dataLoggTable.id in " +
"(select id from dataLoggTable offset :firstIndex)",
nativeQuery = true)
@Modifying
@Transactional
void delete(int firstIndex);
推荐阅读
- python - Python设置为数组和数据框
- c# - TFS 2018 build failing with Error MSB6006: "csc.exe" exited with code 1
- c++ - 将字符串拆分为数组,数组中不需要的元素(似乎)
- r - 使用 R 中 dplyr 中的 mutate 函数创建具有日期值(2000-05-06)的新列
- spring - 需要创建一个停用用户的控制器。
- apache-spark - 使用字符串分区键与整数分区键的 Hive/Impala 性能
- ios - CoreData + Codable 不保存
- pandas - 熊猫数据框行背景颜色
- google-bigquery - 大查询错误:8822097
- python - 这段python代码运行得很慢?