前言

在项目中,分页查询数据是不可缺少的一部分,下面简单了解一下Spring Data中提供的分页接口Pageable和Page


一、Pageable概述

Pageable是Spring Data库中的一个接口,主要用于构造分页查询语句。
Pageable接口包含了分页的相关信息,使用getPageNumber()和getPageSize(),可以获取当前是第几页和每页的的数据量大小。
在查询语句中加入Pageable对象作为参数,JPA就能够通过该Pageable对象的信息,分析生成一个带分页查询的SQL语句。

二、Pageable对象的获取

使用PageRequest类中的静态方法of来获取Pageable对象。(PageRequest类继承了AbstractPageRequest类,而AbstractPageRequest类有实现了Pageable接口)

示例代码:

//	不带排序的Pagable对象
public void getLatestPagingUser(Integer pageNum, Integer size) {
        Pageable pageable = PageRequest.of(page, size);
    }
//	带有排序的Pageable对象,根据实体中的creatTime属性进行倒序排序
public void getLatestPagingUser(Integer pageNum, Integer size) {
	Pageable page = PageRequest.of(pageNum, size, Sort.by("createTime").descending());
}

三、Page的使用

Page也是Spring Data库中的一个接口,主要用于存储JPA查询数据库的结果集。
当使用Pageable对象作为参数进行查询的时候,JPA返回的是一个Page对象

示例代码:

public Page<User> getLatestPagingUser(Integer pageNum, Integer size) {
	Pageable page = PageRequest.of(pageNum, size, Sort.by("createTime").descending());
	
	// userRepository是UserRepository接口的一个对象,UserRepository继承了JpaRepository接口
	return userRepository.findAll(page);
}

Page接口中有许多的方法可以获取,查询的结果信息
以下是比较常用的方法:

public void test(Page<T> pageT){
	int total = pageT.getTotalElements();	// 获取记录的总条数
	int count = pageT.getSize();			// 获取每页的记录条数
	int page = pageT.getNumber();			//	获取当前是第几页
	int totalPage = pageT.getTotalPages();	//	获取总页数
	List<T> list = pageT.getContent();		// 获取记录的集合列表
}
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐