已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
综述分页,是一种将所有数据分段展示给用户的技术.用户每次看到的不是全部数据,而是其中的一部分,如果在其中没有找到自习自己想要的内容,用户可以通过制定页码或是翻页的方式转换可见内容,直到找到自己想要的内容为止.其实这和我们阅读书籍很类似.下页显示了两种常见的分页方式.意义分页确实有效,但它一定会加大系统的复杂度,但可否不分页呢?如果数据量少的话当然可以.但是对于企业信息系统来说数据量不会限制在一个小范围内. 如果不顾一切的Select * from某个表,再将返回的数据一古脑的扔给客户,即使客户能够忍受成千上万足够让人眼花缭乱的表格式数据,繁忙的网络,紧张的服务器也会提出它们无声的抗议,甚至有时会以彻底的罢工作为终结.这个结局有点像古代为所欲为的暴君和他忍无可忍的臣民之间的故事.程序员不是暴君,他希望程序使生活变得更好而不是更糟.考虑到企业信息系统多是三层甚至更多层架构的事实,程序员在向客户展示数据时都应该采取分页的形式.如果他不想被抱怨淹没或是半夜被电话惊醒的话.从请求发起到返回数据的整个过程现在你已经下定决心想要分页了,在动手书写代码之前,先让我们回想一下,在典型的三层架构中,从请求发起到返回数据的整个过程.如下所示:在哪里进行分页从上面的图中我们可以观察得知,在SQL语句处理完毕后,数据库,WebApplication和Browser都能进行分页,那在哪里分页好呢?判断的标准是速度,显而易见,数据库服务器,Web应用服务器和客户端之间是网络,如果网络传递的数据量越少,则客户端获得响应的速度越快.而且一般来说,数据库服务器和Web应用服务器的处理能力一般比客户端要强很多.从这两点来看,在客户端分页的方案是最不可取的.其次就剩下了在Web服务器端分页和在数据库端分页两种方式了,如果选择在Web服务器端分页的话,大部分的被过滤掉的数据还是被传输到了Web应用服务器端,与其这样还不如直接在数据库端进行分页.分页的SQL语句如果我们是通过JDBC的方式访问数据库,那么就有必要根据数据库类型采取不同的SQL分页语句,对于MySql数据库,我们可以采用limit语句进行分页,对于Oracle数据库,我们可以采用rownum的方式进行分页.MySql的Limit m,n语句Limit后的两个参数中,参数m是起始下标,它从0开始;参数n是返回的记录数。我们需要分页的话指定这两个值即可.如右是limit语句的一次应用,图示的SQL语句返回报销记录表中第四,第五条报销额度最大的记录。Oracle数据库的rownum在Oracle数据库中,分页方式没有MySql这样简单,它需要依靠rownum来实现.Rownum表示一条记录的行号,值得注意的是它在获取每一行后才赋予.因此,想指定rownum的区间来取得分页数据在一层查询语句中是无法做到的,要分页还要进行一次查询.右图是分页的具体示例,它从帐户表中返回前十条记录.将两种方案统合起来实际上两种方案的核心查询语句,分页的起点和终点都是一样的,只是方言有所不同.如果将特殊的部分封装起来,对外置以统一的接口,这样在转换数据库时更换被/* */屏蔽的部分即可.下页显示了统合的函数.ListfetchPageRecords(intstart,intend,StringcoreSql)throwsCannotConnectToDBException,SQLExceptionStringBuffersb=newStringBuffer();/下面是Oracle的分页/*/*sb.append(Select);sb.append(*);sb.append(from);sb.append();sb.append(Select);sb.append(t01.*,);sb.append(rownumasnewRowNum);sb.append(from);sb.append();sb.append(coreSql);sb.append()t01);sb.append(where);sb.append(rownum+start+);*/下面是MySql的分页sb.append(coreSql+limit+start+,+end);Stringsql=sb.toString();returnsearch(sql);Hibernate实现的分页如果使用Hibernate取代JDBC,那么上面这一步就不用我们自己费力了,Hiberate会根据方言的种类选择不同的方案,具体我们不必知道也不想知道,要分页直接制定firstRow和maxRow即可,具体函数如下:publicListfindPageDatum(Stringhql,intfirstRow,intmaxRow)Listresult;Sessionsession=HibernateUtil.getSession();Queryq=session.createQuery(hql);q.setFirstResult(firstRow);q.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 冲压工程师技能等级评定标准
- 安全员安全防护技术要点
- 实践案例工艺工程师的焊工培训计划
- 员工关系管理与企业劳动争议处理-强调员工关系和劳动争议
- 从全球视角看碳中和目标下的金管理实践
- 健康管理计划及健康促进方案
- 人防工程合同纠纷解决技巧
- 注册咨询工程师投资如何进行有效的项目投标与合同管理
- 融资策略融资总监的年度工作计划与执行
- 幼儿园开学入取通知书
- 初中英语试卷讲评及课堂教学设计
- 雨课堂在线学堂《中国传统文化》课后单元测试答案
- 2025年郑州登封市公共交通运营有限公司社会招聘工作人员35人笔试考试参考题库及答案解析
- 中药药食同源开发项目分析方案
- 2024年公务员国考行测真题(含答案)
- 灵活就业人员劳动合同范本及说明
- 2025版更年期综合征症状讲解及护理要点
- 退休人员返聘合同
- 智能物流设备维护操作指南
- 2025年学习两会精神应知应会知识测试题附含答案
- 水性涂料项目建设工程方案
评论
0/150
提交评论