分页的原理 :
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;
}
服务器接收后进行处理传递给客户端。
分享到:
相关推荐
针对目前分页查询问题解决方案较为复杂、不易维护的问题,运用JSP自定义标签技术和HQL语言,提出了一个在SSH架构下的解决方案.该方案可有效地使分页面板的显示、处理与JSP页面分离,使用简单,功能完整,并已经成功运用于...
为了探索Django 框架下Web 数据查询分页的实现方法及性能,本文先对Web 数据查询分页的执行过程和在 其它框架下常用的分页方法进行了分析研究。在此基础上,提出了在Web 服务层和在数据库服务层分页两种方案 ...
最近简单的对oracle,mysql,sqlserver2005的数据分页查询作了研究,把各自的查询的语句贴出来供大家学习….. (一)、mysql的分页查询 mysql的分页查询是最简单的,借助关键字limit即可实现查询,查询语句通式: ...
这个是通过学习后我自己研究的分页查询,逻辑紧密,感觉还是不错的,希望能给需要的朋友以参考
1.真正分页, 只取需要的数据; 2.无刷新; 3.高效简洁; 4.基于jquery和.net(vs2008),适合GridView,Repeater等一切数据控件;(有时间再做一个java版的, 当然, 其实思路是一样的, java的同志也可以下载了研究一下, 不难的...
在以数据为中心的动态Web应用...本文结合ASP.NET与SQL(结构化查询语言)编程特性,深入研究了多种分页显示方法,并进行了相关性能的分析与比较,从而为不同应用环境而选用不同的分页技术,提供了较为完整的技术参考
1、这个小程序演示了如何使用原生ADO对查询出的数据进行分页显示; 2、我们平时看到的网页新闻列表就是分页显示的结果,是VBScript编写网页的一项基本技巧,不过到了Delphi中都成了稀罕东西了; 3、一些朋友也研究过...
1.实现了分页查询 2.使用循环向datagridview中增加数据库中不存在的列 3.对sqlserver中字符串转换为smalldatetime/datetime时出现的数据类型转换错误有了很好的解决 注意:在业务逻辑层没有做数据验证,请大家使用时...
本资料只是供一些爱好研究数据分页的人士参考 海量数据库的查询优化及分页算法方案
java web开发,jsp,servlet框架,mysql,适合个人研究学习,用于毕业设计,课程设计等 java web开发,jsp,servlet框架,mysql,适合个人研究学习,用于毕业设计,课程设计等 java web开发,jsp,servlet框架,...
最近在做一个几百万条数据的分页查询,研究了各种方案,在本机上用项目的实际数据库做测试,测试过程 is very 痛苦,不堪回首ing。现在废话不多说,直接上结果,相信这也是大多数搜索答案的人最愿意看的方式。 ...
mybatis-pus的多表联查,分页查询
最近发现现有框架的通用查询存储过程的性能慢,于是仔细研究了下代码: 代码如下:Alter PROCEDURE [dbo].[AreaSelect] @PageSize int=0, @CurrentPage int=1, @Identifier int=NULL, @ParentId int=NULL, @...
不过当一个页面有多处需要采用分页的话,就行不通了,要么修改django-pagination的源码,改变它的url指向,不过我没研究,当工程涉及到迁移时,要知道要安装各种东西本来就是个缺点,还要再修改源码,那就得不偿失。...
4. 查询功能:分本科生和研究生两类人员,实现下列查询功能。 1) 分页显示全部学生的信息。分页功能:每页显示10条学生的信息,有上一页、下一页、首页和最后一页的功能。 2) 能够按班级显示本班全部学生信息。 3) ...
采用动态分页调度算法结合LOD技术实现了海量三维地形数据的加载与显示,研究三维军标绘制技术,提出了一种基于可视范围动态计算投影区域的方法,解决了三维线、面标号纹理模糊不清问题。采用MVC设计模式搭建二三维...
它封装了注册和载入JDBC驱动程序、建立数据库连接、运行Structured Query Language(SQL)语句及处理查询结果集、查询结果集的分页显示操作,简化了Java DataBase Connectivity(JDBC)代码的编写,通过编写SQL语句,...
27.数据库分页语句 limit limit (索引,长度) 28.多表查询 Select 列名 from 表名1,表名2 29.笛卡尔乘积 (A,B) (c,d) => Ac Ad Bc Bd 30.内连接查询 A.隐式内连接 B.显示内连接 inner join on Select ...