怎么用sql进行分页 哪位给我个案例看看

问题描述

分页我知道也可以用自定义标签来做无奈学的太烂了只好用sql来做看网上有人写出了sql语句但我不知道放在哪里怎么用(好吧我是小白)最好2个都教我怎么用说的尽量详细点哈一定要有例子理论太空洞了还有就是这2种我知道的分页哪种效率更高一点或者说企业里面哪种用的更为广泛

解决方案

解决方案二:
分页Bean:PageBean.javapackagecom.accp.bookstore.pagination;importjava.util.Enumeration;importjava.util.HashMap;importjava.util.Map;importjavax.servlet.http.HttpServletRequest;/***分页JavaBean***/publicclassPageBean{/*当前页*/privateintcurPage=1;/*总记录数*/privateinttotalRecord=0;/*每页记录数*/privateintpageRecord=10;/*是否分页,默认分页*/privatebooleanpaginate=true;/*用来存放其它查询参数*/privateMap<String,String[]>parameters=newHashMap<String,String[]>();publicPageBean(){super();}publicPageBean(HttpServletRequestrequest){super();StringpageRecord=request.getParameter("pageRecord");StringcurPage=request.getParameter("curPage");Stringpaginate=request.getParameter("paginate");//将请求中的所有参数保存这个Map集合中Enumeratione=request.getParameterNames();StringparamName=null;String[]paramValues=null;while(e.hasMoreElements()){paramName=(String)e.nextElement();paramValues=request.getParameterValues(paramName);parameters.put(paramName,paramValues);}this.setPageRecord(pageRecord);this.setCurPage(curPage);this.setPaginate(paginate);}publicMap<String,String[]>getParameters(){returnparameters;}publicintgetCurPage(){returncurPage;}publicvoidsetCurPage(intcurPage){if(curPage>1){this.curPage=curPage;}}publicvoidsetCurPage(StringcurPage){if(null==curPage||curPage.trim().equals("")){return;}intacurPage=Integer.parseInt(curPage);this.setCurPage(acurPage);}publicintgetPageRecord(){returnpageRecord;}publicvoidsetPageRecord(intpageRecord){this.pageRecord=pageRecord;}publicvoidsetPageRecord(StringpageRecord){if(null!=pageRecord&&!pageRecord.trim().equals("")){this.pageRecord=Integer.parseInt(pageRecord);}}publicintgetTotalRecord(){returntotalRecord;}publicvoidsetTotalRecord(inttotalRecord){this.totalRecord=totalRecord;}/***true表示进行分页**@return*/publicbooleanisPaginate(){returnpaginate;}/***设置是否分页true分页,false不分页**@parampaginate*/publicvoidsetPaginate(booleanpaginate){this.paginate=paginate;}/***设置是否分页true分页,false不分页**@parampaginate*/publicvoidsetPaginate(Stringpaginate){if(null!=paginate&&paginate.trim().equalsIgnoreCase("false")){this.setPaginate(false);}else{this.setPaginate(true);}}/***返回下一页页码**@return*/publicintgetNextPageNumber(){intnextPageNumber=this.curPage+1;if(nextPageNumber>this.getMaxPageNumber()){nextPageNumber=this.getMaxPageNumber();}returnnextPageNumber;}/***返回上一页页码**@return*/publicintgetPreviousPageNumber(){intpreviousPageNumber=this.curPage-1;if(previousPageNumber<1){previousPageNumber=1;}returnpreviousPageNumber;}/***返回最大页码编号**@return*/publicintgetMaxPageNumber(){intmaxPageNumber=1;if(this.totalRecord>this.pageRecord){if(0==this.totalRecord%this.pageRecord){maxPageNumber=this.totalRecord/this.pageRecord;}else{maxPageNumber=this.totalRecord/this.pageRecord+1;}}returnmaxPageNumber;}/***获取起始记录下标**@return*/publicintgetStartRecordIndex(){returnthis.pageRecord*(this.curPage-1);}publicbooleanisEnabled(){booleanb=true;if(!this.isPaginate()||this.getTotalRecord()<this.getPageRecord()){b=false;}returnb;}publicStringtoString(){StringBufferbf=newStringBuffer();bf.append("curPage="+curPage);bf.append(",totalRecord="+totalRecord);bf.append(",pageRecord="+pageRecord);returnbf.toString();}}

标签类编写:PageBeanTag.javapackagecom.accp.news.tag;importjavax.servlet.jsp.JspException;importjavax.servlet.jsp.tagext.BodyTagSupport;importcom.accp.news.util.PageBean;/***通用分页标签**/publicclassPageBeanTagextendsBodyTagSupport{privatestaticfinallongserialVersionUID=8450962461296575662L;/*分页JavaBean*/privatePageBeanpageBean=null;/*查询条件*/privateStringurl=null;publicPageBeanTag(){super();}publicPageBeangetPageBean(){returnpageBean;}publicvoidsetPageBean(PageBeanpageBean){this.pageBean=pageBean;}publicStringgetUrl(){returnurl;}publicvoidsetUrl(Stringurl){this.url=url;}@OverridepublicintdoStartTag()throwsJspException{if(null!=pageBean){try{pageContext.getOut().write(getHTML());}catch(Exceptionex){ex.printStackTrace();thrownewRuntimeException(ex);}}returnSKIP_BODY;}/*将分页JavaBean转换成HTML字符串*/privateStringgetHTML(){StringBufferbf=newStringBuffer();bf.append("每页"+pageBean.getPageRecord()+"行");bf.append("共"+pageBean.getTotalRecord()+"行");bf.append("第"+pageBean.getCurPage()+"页");bf.append("共"+pageBean.getMaxPageNumber()+"页");bf.append("<ahref='javascript:gotoPage("+1+")'>首页</a>");bf.append("<ahref='javascript:gotoPage("+pageBean.getPreviousPageNumber()+")'>上一页</a>");bf.append("<ahref='javascript:gotoPage("+pageBean.getNextPageNumber()+")'>下一页</a>");bf.append("<ahref='javascript:gotoPage("+pageBean.getMaxPageNumber()+")'>尾页</a>");bf.append("页数<inputtype='text'id='pageNumber'style='width:20px;'/><ahref='javascript:jumpPage("+pageBean.getMaxPageNumber()+")'>GO</a>");//拼接查询字符串,当前页作为最后一个条件if(-1==this.url.lastIndexOf("?")){this.url+="?curPage=";}else{this.url+="&curPage=";}//分页所需JS方法和变量bf.append("<script>");bf.append("varurl='"+url+"';");bf.append("functiongotoPage(curPage){vars=url+curPage;location.href=s;}");bf.append("varmaxPageNumber="+pageBean.getMaxPageNumber()+";");bf.append("functionjumpPage(){varcurPage=document.getElementById('pageNumber').value;if(curPage==''||isNaN(curPage)||parseInt(curPage)<1||parseInt(curPage)>maxPageNumber){alert('请输入一个正确的页码');return;}gotoPage(curPage);}");bf.append("</script>");returnbf.toString();}}

标签定义:pageBean.tld<!DOCTYPEtaglibPUBLIC"-//SunMicrosystems,Inc.//DTDJSPTagLibrary1.2//EN""http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd"><taglibxmlns="http://java.sun.com/JSP/TagLibraryDescriptor"><tlib-version>1.0</tlib-version><jsp-version>1.2</jsp-version><short-name>SimpleTags</short-name><tag><name>pageBean</name><tag-class>com.accp.news.tag.PageBeanTag</tag-class><body-content>empty</body-content><attribute><name>url</name><required>true</required><rtexprvalue>true</rtexprvalue></attribute><attribute><name>pageBean</name><required>true</required><rtexprvalue>true</rtexprvalue></attribute></tag></taglib>

解决方案三:
自己的帖子自己顶
解决方案四:
数据量小就用标签分页,数据量大就用SQL分页
解决方案五:
还有吗大家帮帮我啊
解决方案六:
mysql用limit,oracle用rowid
解决方案七:
5L同学我用的是MSSQL
解决方案八:
该回复于2010-12-07 09:17:29被版主删除
解决方案九:
连用的什么数据库都不说!对于这种不明不白的问题,我建议不要再进行回复
解决方案十:
sqlserver的飘过.
解决方案十一:
我也不是很清楚的···
解决方案十二:
用标签很好的啊。displaytable啊test这个对象模型就不说了CTRL中这样EntityQueryquery=newEntityQuery(Test.class,"test");MultiPageForHqlmph=this.getMultiPageFactory().createMultiPageForHql(query);mp.put("tests",mph);jsp中<display:tablename="tests"id="test"requestURI="test.do"><display:columntitle="名字"property="name"/></display:table>很方便的啊
解决方案十三:
mysql用limit,oracle用rowid
解决方案十四:
mssqllimitoraclerownumsqlservertopmysql:select*fromt_userlimit0,5;sqlserver:selecttoppageSize*fromt_userwhereidnotin(selectidformt_userwhereid<=(pageNo-1)*pageSize);oracle:selecty.*,y.rnfrom(selectt.*,rownumrnfrom(select*fromt_user)twhererownum<=5)ywherey.rn>0希望对楼主有用.一般分页都会写一个分页组件的
解决方案十五:
$maxRows_show_campaign=20;$pageNum_show_campaign=0;........//提供部分代码;<divid="lantiao_2">共有<?phpecho($totalRows_show_campaign);?>条记录<?phpecho$maxRows_show_campaign;?>条/页第<?phpecho$pageNum_show_campaign+1;?>/<?phpechoceil($totalRows_show_campaign/20);?>页<?phpif($pageNum_show_campaign>0){//Showifnotfirstpage?><ahref="<?phpprintf("%s?pageNum_show_campaign=%d%s",$currentPage,0,$queryString_show_campaign);?>">首页</a><ahref="<?phpprintf("%s?pageNum_show_campaign=%d%s",$currentPage,max(0,$pageNum_show_campaign-1),$queryString_show_campaign);?>">上一页</a><?php}//Showifnotfirstpageelse{echo"首页上一页";}?><?phpif($pageNum_show_campaign<$totalPages_show_campaign){//Showifnotlastpage?><ahref="<?phpprintf("%s?pageNum_show_campaign=%d%s",$currentPage,min($totalPages_show_campaign,$pageNum_show_campaign+1),$queryString_show_campaign);?>">下一页</a><ahref="<?phpprintf("%s?pageNum_show_campaign=%d%s",$currentPage,$totalPages_show_campaign,$queryString_show_campaign);?>">尾页</a><?php}//Showifnotlastpageelse{echo"下一页尾页";}?></div>

时间: 2024-12-04 00:13:52

怎么用sql进行分页 哪位给我个案例看看的相关文章

sql server-关于SQL的有哪位大神知道吗?

问题描述 关于SQL的有哪位大神知道吗? SQLserver2008怎么显示行数?有哪位大神知道吗?关于SQL的有哪位大神知道吗? 解决方案 最左边不是有行数吗? 解决方案二: sql 常用语法 你知道吗? 解决方案三: 工具--选项--文本编辑器--所有语言--显示--行号 解决方案四: 你是要在查询结果中显示行数..还是要在查询语句的SQLwindow编辑器中显示行数? 解决方案五: 如果是想要统计记录条数,通过符合基本SQL规范的: select count(*) from 表名: 就可以

简单谈基于SQL SERVER 分页存储过程的演进

server|存储过程|分页 简单谈基于SQL SERVER 分页存储过程的演进 作者:郑佐日期:2006-9-30 针对数据库数据在UI界面上的分页是老生常谈的问题了,网上很容易找到各种"通用存储过程"代码,而且有些还定制查询条件,看上去使用很方便.笔者打算通过本文也来简单谈一下基于SQL SERVER 2000的分页存储过程,同时谈谈SQL SERVER 2005下分页存储过程的演进. 在进行基于UI显示的数据分页时,常见的数据提取方式主要有两种.第一种是从数据库提取所有数据然后在

SQL Server分页问题

环境 SQLServer 2008 R2 问题 SQLServer分页 解决 use test; --创建测试表 create table test ( id int primary key identity, name varchar(20) not null ); --插入数据 insert into test(name) values('test1'); insert into test(name) values('test2'); insert into test(name) value

SQL Server分页3种方案比拼[转]

建立表: CREATE TABLE [TestTable] (  [ID] [int] IDENTITY (1, 1) NOT NULL ,  [FirstName] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,  [LastName] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,  [Country] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS N

sql语句分页,并返回总行数

问题描述 sql语句分页,并返回总行数 Select '备品备件' As WLlb,sb.Number As sbNumber,sb.Name As SbName, sbgg.Name As sbGGName,sb.Unit As SbUnit, bm.GroupName As sbGroupName, fc.GroupName As fcRranch, Sum(cgmx.Num) As SumNum,Sum(sbinfo.BuyPrice) As SumPrice From E_Purchas

sql排序分页 如果有新数据插入

问题描述 sql排序分页 如果有新数据插入 sql排序分页 如果有新数据插入并且排序在前面,那取第二页的时候就会有重复数据,而且新插入的数据展示不出来了,怎么解决呢? 各位可能没理解我意思: 比如说现在数据库里面几千万数据,还是实时插入的数据,我想排序后分页取,比如说第一次通过代码给数据库传参取第一页,取100条, 1.这个过程数据库是把所有数据几千万条全部load到内存中排序,然后进行分页,然后取出前100条吗? 2.那第二次,还会再load所有数据一次重新排一次序,再取出101-200之间的

SQL数据分页查询的方法_MsSql

最近学习了一下SQL的分页查询,总结了以下几种方法. 首先建立了一个表,随意插入的一些测试数据,表结构和数据如下图: 现在假设我们要做的是每页5条数据,而现在我们要取第三页的数据.(数据太少,就每页5条了) 方法一: select top 5 * from [StuDB].[dbo].[ScoreInfo] where [SID] not in (select top 10 [SID] from [StuDB].[dbo].[ScoreInfo] order by [SID]) order by

SQL数据分页查询的方法

最近学习了一下SQL的分页查询,总结了以下几种方法. 首先建立了一个表,随意插入的一些测试数据,表结构和数据如下图: 现在假设我们要做的是每页5条数据,而现在我们要取第三页的数据.(数据太少,就每页5条了) 方法一: select top 5 * from [StuDB].[dbo].[ScoreInfo] where [SID] not in (select top 10 [SID] from [StuDB].[dbo].[ScoreInfo] order by [SID]) order by

几种SQL Server分页的存储过程写法以及性能比较

几种SQL Server分页的存储过程写法以及性能比较 存储过程的5种分页写法,下面的代码是从忘了什么时候从别人那Ctrl+C来的,所以仅仅作为收藏,希望作者看到不要喷我.  ------创建数据库教程data_Test ----- create database data_Test  GO use data_Test GO create table tb_TestTable   --创建表 (     id int identity(1,1) primary key,     userName