使用Spring Data JPA进行分页和排序

通过代码示例学习使用Spring Data JPA进行分页和排序 。 了解如何使用Springs PagingAndSortingRepository接口获取分页和排序结果。

1概述

在处理大量数据时,惰性处理通常是必不可少的。 即使服务返回了大量数据,消费者也不太可能使用它。 考虑一个购物网站,客户在其中搜索产品,并且该网站有数千种产品要显示。 获取数千种产品并将其显示在网页上将非常耗时。 在大多数情况下,客户甚至可能不会查看所有产品。

对于这种情况,使用了称为分页的技术。 最初只显示一小部分产品(页面),客户可以要求查看下一个子集(页面),依此类推。 这称为分页。

是否想通过Spring和Spring Boot学习使用Java Persistence API(JPA)?

读这个:

  • 使用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 PagingAndSortingRepository<Employee, Long> {Page<Employee> findAll(Pageable pageable);Page<Employee> findByFirstName(String firstName, Pageable pageable);Slice<Employee> findByFirstNameAndLastName(String firstName, String lastName, Pageable pageable);
}

4分页

看一下EmployeeRepository ,该方法接受Pageable参数。 Pageable是Spring定义的接口,其中包含Page请求。 让我们看看如何创建页面请求。

Pageable pageable = PageRequest.of(0, 10);
Page<Employee> 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 ,其中PageSlice的子接口。 它们都用于保存和返回数据的子集。 让我们一一看一下

切片

切片知道它是否有内容,无论它是第一个还是最后一个切片。 它还能够返回当前和先前切片中使用的Pageable 。 让我们看一下Slice的一些重要方法。

List<T> 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> Page<T> empty; //create an empty pagelong getTotalElements(); // number of total elements in the tableint totalPages() // number of total pages in the table

7小结

在这篇使用Spring Data JPA进行分页和排序的文章中,我们了解了为什么需要分页。 我们学习了如何对数据进行分页和排序。 我们还看到了SlicePage界面及其差异。

翻译自: https://www.javacodegeeks.com/2019/02/pagination-sorting-spring-data-jpa.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/344712.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【从3D点云生成平面图:一种空间划分方法】

文章目录 概要概述实验总结 概要 本文提出了一种从原始传感器数据自动重建室内环境平面图的新方法。现有的方法是通过检测角点并将它们连接起来&#xff0c;以平面图形的形式生成平面图&#xff0c;与此相反&#xff0c;本文采用了一种策略&#xff0c;将空间分解为多边形分区…

数字信号处理基础知识之DFT、DTFT、DFS、FFT基本概念扫盲

一、名词汇总 DFT&#xff1a;离散傅里叶变换&#xff08;Discrete Fourier Transform&#xff09;&#xff1b; DTFT&#xff1a;离散时间傅里叶变换&#xff08;Discrete-time Fourier Transform&#xff09;&#xff1b; DFS&#xff1a;离散傅里叶级数&#xff0c;又称离散…

Word学习笔记

文件菜单&#xff1a; 1、另存为快捷键&#xff1a;F12 论文打印时&#xff0c;保存为PDF格式 2、信息-保护文档-用密码进行加密 3、信息-检查文档 &#xff1a;批量删除相关内容 4、officeplus&#xff1a;模板下载 5、文件-选项-显示 7、文件-选项-校对&#xff1a;去掉波浪…

jersey put 服务_项目学生:带有Jersey的Web服务服务器

jersey put 服务这是Project Student的一部分。 其他职位包括带有Jersey的Webservice Client &#xff0c; 业务层和带有Spring Data的持久性 。 RESTful Web应用程序洋葱的第二层是Web服务服务器。 它应该是一个薄层&#xff0c;用于包装对业务层的调用&#xff0c;但不对其自…

数字基带传输学习笔记00引言

S0 引言 一、是什么 1、什么是数字基带信号&#xff1f; 未经调制的数字信号&#xff0c;所占据频谱从零频或很低频率开始 若信道中传输的是数字信号&#xff0c;则称为数字通信系统。这些信号包含丰富的低频分量&#xff0c;甚至直流分量&#xff0c;称为数字基带信号。 如…

如何在ADF中将参数传递给ActionListener

在某些情况下&#xff0c;需要将值传递给ADF Button的ActionListener。 可以由actionListeners调用的方法只有一个ActionEvent类型的参数。 因此&#xff0c;我将解释如何将参数传递给该bean方法&#xff0c;但是它在方法签名中仅包含一个参数ActionEvent。 我在页面上添加了…

计算机二级公共基础部分学习笔记

1、Rear指向队列最后一个元素的位置 Front指向队列第一个元素的前一个位置 RearFront&#xff0c;要么满&#xff0c;要么空&#xff1b;循环队列元素个数求法&#xff1b; 2、总节点数不同度节点数相加 总节点数度数*对应节点数和1 3、二叉树 前序&#xff1a;根-左-右 中序&…

【渝粤教育】电大中专新媒体营销实务 (9)作业 题库

1.新媒体在进行内容传播时&#xff0c;可以做到将文字、图片、视频等同时传播&#xff0c;呈现出&#xff08; &#xff09;的特点。 A.移动化 B.多元化 C.便捷性 错误 正确答案&#xff1a;左边查询 学生答案&#xff1a;A 2.第四媒体发展到宽带互联网阶段成为&#xff08; &a…

FPGA初学者入门相关概念知识点

一、基础入门 1、整体理解 简单来说&#xff0c;FPGA 就是“可反复编程的逻辑器件”。 ASIC 和 FPGA 就如同印刷品和白纸 ARM 虽然有很多外设&#xff0c;DSP 虽然具备强大的信号运算能力&#xff0c;但是&#xff0c;ARM 能做的&#xff0c;DSP 能做的&#xff0c;FPGA 一定…

java jpa 规范_Java:在JPA中使用规范模式

java jpa 规范本文是在Java中使用规范模式的简介。 我们还将看到如何将经典规范与JPA Criteria查询结合使用&#xff0c;以从关系数据库中检索对象。 在本文中&#xff0c;我们将使用以下Poll类作为创建规范的示例实体。 它表示具有开始和结束日期的民意调查。 在这两个日期之…

01数字基带信号及其频谱特性

S1 数字基带信号及其频谱特性 一、分类 1、单极性不归零波形 优点&#xff1a;电脉冲之间无间隔&#xff0c;极性单一&#xff0c;易于用TTL&#xff0c;CMOS电路产生&#xff1b; 缺点&#xff1a; a) 有直流成份&#xff1b;判决电平不能稳定在最佳的电平&#xff0c;抗噪声…

【渝粤教育】电大中专电商运营实操 作业 题库

1.电子商务最重要的是&#xff08; &#xff09; A.商务 B.网站 C.货物 D.信息技术 正确 正确答案&#xff1a;左边查询 学生答案&#xff1a;A 2.目前菜鸟网络依赖大数据和云计算已实现了哪些功能&#xff08; &#xff09; A.自动化仓库 B.智能发货 C.物流云加速 D.以上都正确…

人工智能英语学习笔记

基础篇单词 mythology n. ancient myths in general; ideas that many people think are true but that do not exist or are false 神话 Examples: A satyr is half man and half goat in Greek and Roman mythology. 在希腊和罗马神话中&#xff0c;森林之神是半人半羊的样子…

【渝粤教育】电大中专电子商务网站建设与维护 (24)作业 题库

1.阿里巴巴网站的不足不包括&#xff08; &#xff09; A.网站定位不当 B.客户过于庞大&#xff0c;往往不重视或忽略了个别小企业基本服务 C.信息冗余 D.“诚信通”的诚信问题 错误 正确答案&#xff1a;左边查询 学生答案&#xff1a;未作答 2.阿里巴巴采用国际化的网站建设方…

CSDN公式编辑(latex语言应用)整理

在线Latex公式编辑器 latex语法指南 一、常用规则 1、编辑公式时&#xff0c;公式显示在两个$$之间。 $ 公式 $ &#xff1a;可写在句中&#xff0c;如me>smartnicehealthyme>smartnicehealthyme>smartnicehealthy $ $ 公式 $ $ &#xff1a;比较大&#xff0c;如me…

API网关正在经历身份危机

这些年来&#xff0c;API网关正在经历一些身份危机 。 它们是否是集中的共享资源&#xff0c;以促进对外部实体的API公开和治理&#xff1f; 它们是集群入口哨兵&#xff0c;可以严格控制哪些用户流量进入或离开集群吗&#xff1f; 还是他们根据自己拥有的客户端类型&#x…

【渝粤教育】广东开放大学 PHP动态网站设计 形成性考核 (48)

选择题 题目&#xff1a;下列说法不正确的是____________。 答案&#xff1a;看左侧 题目&#xff1a;PHP是一种跨平台、的网页脚本语言。 答案&#xff1a;看左侧 题目&#xff1a;PHP网站可称为。 答案&#xff1a;看左侧 题目&#xff1a;PHP网页文件的文件扩展名为________…

通信原理速学02:随机过程

模块1 随机过程 随机过程与样本函数 随机过程指一类随时间做随机变化的过程&#xff0c;用ξ(t)表示&#xff0c;其值不确定&#xff0c;无法用确切的时间函数描述。 随机过程的每一次实现&#xff0c;就称为一次样本函数ξi(t)&#xff0c;随机过程是所有样本函数的集合。 基…

【渝粤教育】广东开放大学 企业财务报表分析 形成性考核 (26)

选择题 题目&#xff1a;行业平均水平标准一般可用于&#xff08;&#xff09; 答案&#xff1a;看左侧 题目&#xff1a;确定影响因素、衡量其影响程度、查明指标变动原因的分析方法是&#xff08;&#xff09;。 答案&#xff1a;看左侧 题目&#xff1a;在企业编制的会计报表…

Verilog基本语法初学

一、语言要素 (一)概述 1、空白符&#xff08;White Space&#xff09; 空格、换行、换页、Tab等&#xff1b; 是代码错落有致&#xff0c;提高可读性。 2、注释&#xff08;Comment&#xff09; 单行注释&#xff1a;“ // ”&#xff1b; 多行注释&#xff1a;“ /* ”~“ …