Spring-Data-Jpa

Spring Data JPA 中的 Scroll API

1、概览 Spring Data Commons 是总括 Spring Data project 的一部分,其中包含管理持久层的接口和实现。Scroll API 是 Spring Data Commons 提供的功能之一,用于处理从数据库读取的大型结果。 在本教程中,我们将通过一个示例探索 Scroll API。 2、依赖 Spring Boot 3.1 版本新增了 Scroll API 支持。Spring Data Commons 已包含在 Spring Data JPA 中。因此,添加 Spring Data JPA 3.1 版本就可以获得 Scroll API 功能: <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-jpa</artifactId> <version>3.1.0</version> </dependency> 最新的版本可在 Maven 中央仓库 中找到。 3、 Entity 类 例如,我们将使用 BookReview 实体,它包含不同用户对不同书籍的书评评级: @Entity @Table(name="BOOK_REVIEWS") public class BookReview { @Id @GeneratedValue(strategy= GenerationType.SEQUENCE, generator = "book_reviews_reviews_id_seq") @SequenceGenerator(name = "book_reviews_reviews_id_seq", sequenceName = "book_reviews_reviews_id_seq", allocationSize = 1) private Long reviewsId; private String userId; private String isbn; private String bookRating; // getter 和 setter 方法 } 4、Scroll API Scroll API 提供了分块迭代大型结果的功能。它提供稳定的排序、scroll 类型和结果限制。

Spring Data JPA 中的分页和排序

1、概览 当我们数据库中的记录数量较多的时候,一般不会一次性检索出所有记录,通常会通过分页的方式展现。 此外,我们还经常需要在分页时根据某些条件对数据进行排序。 在本教程中,我们将学习如何使用 Spring Data JPA 轻松实现分页和排序。 2、创建实体 首先,假设我们有一个 Product 实体作为 domain 类: @Entity public class Product { @Id private long id; private String name; private double price; // 构造函数, getter 和 setter } 我们的每个 Product 实例都有一个唯一的标识符: id、name 和 price。 3、创建 Repository 要访问我们的 Product,我们需要一个 ProductRepository: public interface ProductRepository extends PagingAndSortingRepository<Product, Integer> { List<Product> findAllByPrice(double price, Pageable pageable); } 通过让它继承 PagingAndSortingRepository,我们可以使用,用于分页和排序的 findAll(Pageable pageable) 和 findAll(Sort sort) 方法。 相反,我们也可以选择继承 JpaRepository,因为它也继承了 PagingAndSortingRepository。