外贸网站建站注意事项及价格,特网站建设,企业网站管理系统c,wordpress进行不通过代码示例学习使用Spring Data JPA进行分页和排序 。 了解如何使用Springs PagingAndSortingRepository接口获取分页和排序结果。 1概述 在处理大量数据时#xff0c;惰性处理通常是必不可少的。 即使服务返回了大量数据#xff0c;消费者也不太可能使用它。 考虑一个购物… 通过代码示例学习使用Spring Data JPA进行分页和排序 。 了解如何使用Springs PagingAndSortingRepository接口获取分页和排序结果。 1概述 在处理大量数据时惰性处理通常是必不可少的。 即使服务返回了大量数据消费者也不太可能使用它。 考虑一个购物网站客户在其中搜索产品并且该网站有数千种产品要显示。 获取数千种产品并将其显示在网页上将非常耗时。 在大多数情况下客户甚至可能不会查看所有产品。 对于这种情况使用了称为分页的技术。 最初只显示一小部分产品页面客户可以要求查看下一个子集页面依此类推。 这称为分页。 是否想通过Spring和Spring Boot学习使用Java Persistence APIJPA 读这个 使用Spring Data JPA的Spring Boot 具有EmbeddedId的Spring Data JPA复合密钥 通过EmbeddedId部分找到Spring Data JPA Java Persistence API指南 Spring Data JPA查询方法 2实体 在本教程中我们将考虑“ Employee ”实体的最简单示例。 下面是Employee实体类。 Entity
public class Employee {Id private Long name;private String firstName;private String lastName;private Date dateOfBirth;private Integer age;private String designation;private double salary;private Date dateOfJoining;public Long getName() {return name;}public void setName(Long name) {this.name name;}public String getFirstName() {return firstName;}public void setFirstName(String firstName) {this.firstName firstName;}public String getLastName() {return lastName;}public void setLastName(String lastName) {this.lastName lastName;}public Date getDateOfBirth() {return dateOfBirth;}public void setDateOfBirth(Date dateOfBirth) {this.dateOfBirth dateOfBirth;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age age;}public String getDesignation() {return designation;}public void setDesignation(String designation) {this.designation designation;}public double getSalary() {return salary;}public void setSalary(double salary) {this.salary salary;}public Date getDateOfJoining() {return dateOfJoining;}public void setDateOfJoining(Date dateOfJoining) {this.dateOfJoining dateOfJoining;}
}3员工资料库 在Spring Data JPA查询方法一文中 我们已经了解了Spring存储库接口和查询方法。 在这里我们必须学习Pagination 因此我们将使用Spring的PagingAndSortingRepository 。 Repository
public interface EmployeeRepository extends PagingAndSortingRepositoryEmployee, Long {PageEmployee findAll(Pageable pageable);PageEmployee findByFirstName(String firstName, Pageable pageable);SliceEmployee findByFirstNameAndLastName(String firstName, String lastName, Pageable pageable);
}4分页 看一下EmployeeRepository 该方法接受Pageable参数。 Pageable是Spring定义的接口其中包含Page请求。 让我们看看如何创建页面请求。 Pageable pageable PageRequest.of(0, 10);
PageEmployee page employeeRepository.findAll(pageable); 在第一行中我们创建了一个10名员工的Page请求并请求了第一0页。 该页面请求传递给findAll的页面以获取雇员页面作为响应。 如果要访问下一组后续页面则可以每次增加页码。 PageRequest.of(1, 10);
PageRequest.of(2, 10);
PageRequest.of(3, 10);
...5排序 Spring Data JPA提供了一个Sort对象以便提供一种排序机制。 让我们看一下排序的方式。 employeeRepository.findAll(Sort.by(fistName));employeeRepository.findAll(Sort.by(fistName).ascending().and(Sort.by(lastName).descending()); 显然第一个简单地按“ firstName”排序而另一个按“ firstName”升序和“ lastName”降序排序。 分页和排序在一起 Pageable pageable PageRequest.of(0, 20, Sort.by(firstName));Pageable pageable PageRequest.of(0, 20, Sort.by(fistName).ascending().and(Sort.by(lastName).descending());6 Slice vs Page 在EmployeeRepository中我们看到其中一个方法返回Slice 另一个方法返回Page 。 它们都是Spring Data JPA 其中Page是Slice的子接口。 它们都用于保存和返回数据的子集。 让我们一一看一下 切片 切片知道它是否有内容无论它是第一个还是最后一个切片。 它还能够返回当前和先前切片中使用的Pageable 。 让我们看一下Slice的一些重要方法。 ListT getContent(); // get content of the slicePageable getPageable(); // get current pageableboolean hasContent(); boolean isFirst();boolean isLast();Pageable nextPageable(); // pageable of the next slicePageable previousPageable(); // pageable of the previous slice 页 该页面是Slice的子接口并具有几个其他方法。 它知道表中的总页数以及记录的总数。 以下是Page中的一些重要方法。 static T PageT empty; //create an empty pagelong getTotalElements(); // number of total elements in the tableint totalPages() // number of total pages in the table7小结 在这篇使用Spring Data JPA进行分页和排序的文章中我们了解了为什么需要分页。 我们学习了如何对数据进行分页和排序。 我们还看到了Slice和Page界面及其差异。 翻译自: https://www.javacodegeeks.com/2019/02/pagination-sorting-spring-data-jpa.html