springboot项目批量删除的多种相关代码
时间: 2023-05-29 17:02:44 浏览: 156
springboot项目在Oracle下测试批量添加和批量删除
1. 手动遍历删除
这种方法比较原始,就是遍历符合条件的所有对象,然后一个一个删除。虽然代码简单易懂,但是性能较差,有可能会出现内存溢出的问题。
```java
List<Student> students = studentRepository.findByGrade(2019);
for (Student student : students) {
studentRepository.delete(student);
}
```
2. JPA的deleteAllInBatch方法
这种方法可以一次性删除符合条件的所有对象,而不需要一个个遍历。性能比较好,代码简洁。
```java
studentRepository.deleteAllInBatch(studentRepository.findByGrade(2019));
```
3. JPQL的delete语句
这种方法可以直接使用JPQL的delete语句来删除符合条件的所有对象,性能也很高。不过需要注意的是,如果需要级联删除,需要手动设置级联删除。
```java
@Modifying
@Query("delete from Student s where s.grade = ?1")
void deleteByGrade(int grade);
```
4. Spring Data JPA的@Query注解
这种方法相当于是前面两种方法的综合,使用@Query注解定义JPQL语句,并在接口中定义删除方法。性能较好,代码简洁。
```java
@Modifying
@Query("delete from Student s where s.grade = ?1")
void deleteByGrade(int grade);
```
5. Apache Common的CollectionUtils工具类
这种方法是使用Apache Common的CollectionUtils工具类,类似于Java8的stream流操作,使用lambda表达式来一次性删除符合条件的对象。代码简洁,性能较好。
```java
List<Student> students = studentRepository.findByGrade(2019);
CollectionUtils.filter(students, student -> student.getAge() > 20);
studentRepository.deleteAll(students);
```
阅读全文