分页工具一Pageable与Page

分页工具一Pageable与Page

import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Page;

1.Pageable概述

Page<User> findByAge(int age, Pageable pageable);

Pageable 是Spring Data库中定义的一个接口,用于构造翻页查询,是所有分页相关信息的一个抽象,通过该接口,我们可以得到和分页相关所有信息(例如pageNumber、pageSize等),这样,Jpa就能够通过pageable参数来得到一个带分页信息的Sql语句。

2.Pageable实现:PageRequest

静态方法获取对象

static PageRequest of(int page, int size)与static PageRequest of(int page, int size, Sort sort)

3.直接获取Pageable对象

我们只需要在方法的参数中直接定义一个pageable类型的参数,当Spring发现这个参数时,Spring会自动的根据request的参数来组装该pageable对象

Spring支持的request参数如下:

  • page,第几页,从0开始,默认为第0页
  • size,每一页的大小,默认为20
  • sort,排序相关的信息,例如sort=firstname&sort=lastname,desc表示在按firstname正序排列基础上按lastname倒序排列
@RequestMapping("list") 
public Page<T> getEntryByPageable(@PageableDefault(value = 15, sort = { "id" }, direction = Sort.Direction.DESC) Pageable pageable) { 
            return dao.findAll(pageable);
 }

 

四.Pageable接口

public interface Pageable { //返回要返回的页面. 
    int getPageNumber(); // 返回要返回的项目的数量。
    int getPageSize(); //根据底层页面和页面大小返回偏移量。 
    int getOffset(); //返回排序参数。
    Sort getSort(); }

五.Page接口

Page<User> findByAge(int age, Pageable pageable);

用于储存查询的结果集

public interface Page<T> extends Iterable<T> { 
    int getNumber(); //当前第几页,总是非负的 
    int getSize(); //@常用:返回当前页面的大小。 
    int getTotalPages(); //@常用:返回分页总数。 
    int getNumberOfElements(); //返回当前页上的元素数。 
    long getTotalElements(); //@常用:返回元素总数。 
    boolean hasPreviousPage(); //返回如果有上一页。 
    boolean isFirstPage(); //返回当前页是否为第一页。 
    boolean hasNextPage(); //返回如果有下一页。 
    boolean isLastPage(); //返回当前页是否为最后一页。 
    Iterator<T> iterator(); 
    List<T> getContent(); //@常用:将所有数据返回为
    List boolean hasContent(); //返回数据是否有内容。 
    Sort getSort(); //返回页的排序参数。 }

六.Page接口实现PageImpl

构造函数

PageImpl(List<T> content)

PageImpl(List<T> content, Pageable pageable, long total)


成员方法

List<T> getContent() 
Pageable getPageable() 
long getTotalElements() 
int getTotalPages() 
Sort getSort() 
int getSize()

七.使用

@GetMapping("/showMarkerByPage/{page}") 
public Result showMarkerController(@PathVariable("page") int page){ 
    PageRequest pageRequest = PageRequest.of(page, 5); 
    Page<Marker> markerPage = markerService.findMarker(pageRequest); 
    for (int i = 0; i < markerPage.getContent().size(); i++) { 
        System.out.println(markerPage.getContent().get(i));
        System.out.println(markerPage.getTotalElements()); } 
    if (markerPage.getContent()!=null) { 
        return ResultUtil.success(markerPage.getContent(), "/showMarker"); 
    }else { 
        return ResultUtil.error(1, "查询失败", "/showMarker"); 
    } 
}

 

转自:https://www.cnblogs.com/loveer/p/11303608.html

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值