利用Stream(流)处理查询结果

我们可以使用Stream作为返回类型可以对查询结果进行逐个处理。

Example 9. Stream the result of a query with Java 8 Stream(stream查询结果)

@Query("select u from User u")
Stream<User> findAllByCustomQueryAndStream();

Stream<User> readAllByFirstnameNotNull();

@Query("select u from User u")
Stream<User> streamAllPaged(Pageable pageable);

一个Stream中可能包含底层数据存储的特定资源,所以在使用后必须关闭。可以通过调用close()方法,也可以使用java 7中的try-with-resources块

Example 10. Working with a Stream result in a try-with-resources block(在块中使用Stream)

try (Stream<User> stream = repository.findAllByCustomQueryAndStream()) {
  stream.forEach(…);
}

目前,不是所有的Spring Data模块都支持将Stream作为返回类型