分页查询研究

分页的原理 :

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;
	}

 

服务器接收后进行处理传递给客户端。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值