首页 > 编程笔记 > Java笔记 阅读:2

Spring Boot JPA分页查询的具体实现(附带实例)

JPA 提供了强大的数据查询功能,让我们用少量的代码就能实现大部分数据查询功能。同时,JPA 还提供了分页查询。

JPA 已经帮我们内置了分页功能,在查询的方法中传入参数 Pageable,当查询中有多个参数的时候,Pageable 建议作为最后一个参数传入,示例代码如下:
// 返回Page对象
Page<User> findByNameLike(String name, Pageable pageable);
在上面的示例中,使用 Pageable 对象实现分页查询功能,Pageable 和 Page 是 Spring 封装的分页实现类,使用的时候需要传入页数、每页条数和排序规则。

调用方式也特别简单,先实例化 Pageable 分页参数,然后传入具体的调用方法即可,示例代码如下:
@Test
public void testPageQuery() {
    int pageIndex=0,pageSize=2;
    Sort sort = Sort.by(Sort.Direction.DESC, "id");
    Pageable pageable = PageRequest.of(pageIndex, pageSize, sort);
    Page<User> pageInfo = userRepository.findByNameLike("we%",pageable);
    System.out.println("当前页:"+pageInfo.getNumber()
            +",总记录数:"+pageInfo.getTotalElements()
            +",总页数:"+pageInfo.getTotalPages()
            +",是否有上一页:"+pageInfo.hasPrevious()
            +",是否有下一页:"+pageInfo.hasNext());
    for (User u : pageInfo.getContent()){
        System.out.println("name:"+u.getName()+",age:"+u.getAge());
    }
}
在上面的示例中,使用 Sort 类定义排序对象,然后使用 PageRequest 生成分页参数,最后传入 Pageable 参数即可。
通过示例代码可以看到,Page 封装了总页数、总记录数、当页数据等属性,完全满足分页功能的需求。具体属性如下:

相关文章