分页的原理 :
client:
用户在页面上选择需要浏览的页面,并且将当前选择的页码pageNo和预期每页显示的数量pageSize传递到服务器。
server:
1、服务器接受到数据之后 计算出数据的总记录数量
2、并且根据 用户传递过来的pageNo和pageSize结合总数据量 计算出服务器对应的数据量
3、数据库返回查询的结果。
4、服务器将分页结果(当前分页数记录、上一页、下一页、总数据量)传递给用户。
/**
* 用户运行
*/
public static void client() {
for (int i = 1; i < 10; i++) {
System.out.println();
System.out.println("-----start------");
System.out.println("选择的参数: ");
int pagNo = i;
int pagSize = 50;
System.out.println("用户选择第:" + pagNo + "页");
System.out.println("在选择页中 用户想查询的数据量:" + pagSize + "条");
// 调用服务器
Map map = server(pagNo, pagSize);
if (map != null) {
System.out.println("当前是:" + map.get("pageNo") + "页");
System.out.println("上一页:" + map.get("prePage"));
System.out.println("下一页:" + map.get("nextPage"));
System.out.println("最后一页:" + map.get("totalPage"));
System.out.println("总数据量:" + map.get("totalCount"));
} else {
System.out.println("没有第"+pagNo+" 页面 ,对不起不能查询了 ");
}
System.out.println();
System.out.println("---------end--------");
}
}
模拟一个客户端 将 pagNo和pagSize两个参数 传递给服务器
/**
* 服务器分页
*
* @param pagNo
* 当前选择的页
* @param pagSize
* 当前页需要获取的数据量
* @param count
* 从数据量
*/
public static Map server(int pagNo, int pagSize) {
// 1 计算这张表中总数据量(假设是 34条 一般就是查询count(*) 不带分页的值)
int count = 34;
Pagination pg = new Pagination(-1, pagSize, count);
System.out.println();
System.out.println("--server运行----");
if (pagNo > pg.getTotalPage()) {
return null;
}
// 2、将下面两个参数 传到数据库
System.out.println("在数据表需要的参数: ");
System.out.println("开始索引:" + pg.getFirstResult());
System.out.println("在数据表中 当前需要获取的数据量:" + pg.getPageSize());
System.out.println();
// 程序完毕之后需要获取的数据
System.out.println("在数据表中 当前实际获取的数据量:" + pg.getTotal());
System.out.println("总数据量:" + pg.getTotalCount());
System.out.println();
Map map = new HashMap();
map.put("pageNo", pg.getPageNo());
map.put("prePage", pg.getPrePage());
map.put("nextPage", pg.getNextPage());
map.put("totalPage", pg.getTotalPage());
map.put("totalCount", pg.getTotalCount());
return map;
}
服务器接收后进行处理传递给客户端。