分页其实就是前端向后端请求数据,请求带有参数,一个是第几页,一个是每页需要返回多少条数据。
后端可以建一个类,用来构建给前端返回的数据:
import java.util.List;
public class PageInfo {
//每页多少条数据
private int pageSize;
//第几页
private int pageNumber;
//总共数据
private int total;
//查询的数据集合
// private List<?> list;
private List<List<?>> list;
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getPageNumber() {
return pageNumber;
}
public void setPageNumber(int pageNumber) {
this.pageNumber = pageNumber;
}
public int getTotal() {
return total;
}
public void setTotal(int total) {
this.total = total;
}
public List<?> getList() {
return list;
}
public void setList(List<List<?>> list) {
this.list = list;
}
}
类中包含的几个数据:
第几条数据,每页有多少条数据,这个两条数据是方便前端操作后再继续返回给后端调用新的数据。例如:下一页,就是在这两个数据的基础上计算得出的每页返回多少个(这个值可用来改变每页显示的数据量)数据,以及第几页。
数据列表,对应某个实体类,这是前端需要展示的数据。数据条数,用于在前端展示数据条数,以及用来判断最后一页不可以点击下一页,第一页不可以点击上一页。
DAO具体操作:
获取数据:
public ArrayList<Test> getPageData(int pageSize, int pageNumber) {
if (pageSize >= 0 && pageNumber >= 0) {
String Hql = "from Test";
Query querys = this.getCurrentSession().createQuery(Hql);
querys.setFirstResult(pageSize);
querys.setMaxResults(pageNumber);
ArrayList<Test> dryeye = (ArrayList<Test>) querys.list();
return Test;
}
return null;
}
这方法用于获取数据列表,
querys.setFirstResult(pageSize); 指定从那个对象开始查询,参数的索引位置是从0开始的。
querys.setMaxResults(pageNumber);每页显示的数据
查询总数据条数方法:
public int getTotal() {
String Hql = "select count(*) from Test";
Query query = this.getCurrentSession().createQuery(Hql);
int total = ((Long) query.iterate().next()).intValue();
return total;
}
Service里将数据组织好,controller返回给前端。
前端下一页上一页等思路:
下一页就是pageSize加上每页显示的数据条数pageNumber。但是注意判断和总的条数total的关系。
上一页pageSize减去每页显示的数据条数pageNumber,注意判断和0的关系。
当在第一页的时候不可以点击上一页
在最后一页的时候不可以点击下一页
技术一直都在变,但思路大概就这样,一般不会变。