Datagrid+Spring Data实现分页

3/8/2017来源:ASP.NET技巧人气:5143

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();获取当前页的数据列表。

Datagrid+Spring Data的分页原理