分页查询研究
分页的原理 :
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;}
服务器接收后进行处理传递给客户端。