Datagrid分页原理
Datagrid接收的json数据格式有两种:
不分页数据:
[
{key:value,…},//每个json对象就是一条记录
{key:value,…}
]//元素的数量就是总记录数
分页数据:
{
total:100,//总记录数
rows:[ {},{} ]//当前页的json数组数据
}
1.Datagrid加载时自动向url属性的值发起请求
请求参数中自动提交了两个参数page(当前页码)和rows(每页显示的最大记录数)。
服务器返回json数据后,客户端将自动显示数据列表。
2.当改变页面或者每页记录数,Datagrid会自动发起新的请求,仍然带有page和rows两个参数。
结论:
客户端分页的相关计算和显示全部都交给了Datagrid,我们只需要在服务端拿到page和rows,根据他们查询当前页对应的数据,将数据以json格式返回交给Datagrid即可。
Spring Data的分页原理
PagingAndSortingRepository接口中提供了分页方法:Page findAll(Pageable pageable)
方法参数
Pageable接口对象,Spring Data提供了一个默认的实现类PageRequest:
构造方法中有两个参数:
参数1:page:当前页码
参数2:size:每页最大的记录数
public PageRequest(int page, int size) {
this(page, size, null);
}
方法返回值
Page接口对象,Spring Data提供了一个默认的实现类PageImpl,提供了大量方法。包含对应total和rows的方法。
//Returns the total amount of elements,获取总记录数
public long getTotalElements() {
return total;
}
//Returns the page content as {@link List},返回分页记录
public List<T> getContent() {
return Collections.unmodifiableList(content);
}
常用方法:
- getNumber():获取当前页码
- getSize():获取当前页显示的最大记录数
- getTotalPages():获取总的页数
- List getContent();获取当前页的数据列表。