jsp+oracle 排序分页+Pageutil类
1.rownum和排序
Oracle中的rownum的是在取数据的时候产生的序号,所以想对指定排序的数据去指定的rowmun行数据就必须注意了。
SQL> select rownum ,id,name from student order by name;
ROWNUM ID NAME
3 200003 李三
2 200002 王二
1 200001 张一
4 200004 赵四
可以看出,rownum并不是按照name列来生成的序号。系统是按照记录插入时的顺序给记录排的号,rowid也是顺序分配的。为了解决这个问题,必须使用子查询
SQL> select rownum ,id,name from (select * from student order by name);
ROWNUM ID NAME
1 200003 李三
2 200002 王二
3 200001 张一
4 200004 赵四
这样就成了按name排序,并且用rownum标出正确序号(有小到大)
以前分页习惯用这样的SQL语句:
select * from
(select t.*,rownum row_num from mytable t order by t.id) b
where b.row_num between 1 and 10
结果发现由于该语句会先生成rownum 后执行order by 子句,因而排序结果根本不对,后来在GOOGLE上搜到一篇文章,原来多套一层select 就能很好的解决该问题,特此记录,语句如下:
select * from
(select a.*,rownum row_num from
(select * from mytable t order by t.id desc) a
) b where b.row_num between 1 and 10
2.分页排序
主要思想:采用PageUtil类和用基于rownum的排序分页技术得到每页的内容。
(1)使用上一文章的pageutil类
(2)在查询类里得到结果
public List showList(int start,int end)
{
List<Oplist> listShow = new ArrayList<Oplist>();
DB_OPER db=new DB_OPER();
String s=select * from(select a.*,rownum row_num from(select * from mytable t order by t.id desc) a) b where b.row_num between 1 and 10”;
Result result=db.executeQuery(s);
......//将result转为list
return listShow;
}
//得到总行数
public int AllCount()
{
DB_OPER db=new DB_OPER();
Result result=db.executeQuery("select count(*) as count from a");
Map row = result.getRows()[0];
int size=Integer.parseInt(row.get("count").toString());
return size;
}
(3)在jsp页面查询
<%listOper db=new listOper();
int size=0;
size=db.AllCount();//得到总数
//System.out.println(size);
String pageStr = request.getParameter("page");
int currentPage = 1;
if (pageStr != null)
currentPage = Integer.parseInt(pageStr);
PageUtil pUtil = new PageUtil(15, size, currentPage);
currentPage = pUtil.getCurrentPage();
System.out.println("start:"+pUtil.getFromIndex());
System.out.println("end:"+pUtil.getToIndex());
List result=db.showList(pUtil.getFromIndex()+1, pUtil.getToIndex());
%>
(3)在jsp页面显示结果
<%
for (int i = 0; i <result.size() ; i++) {
Oplist model = (Oplist) result.get(i);
out.print("<TR class='alter'><TD>"+(i+1+pUtil.getFromIndex())+"</TD>");
out.print("<TD>"+model.getLcbh()+"</>");
out.print("<TD>"+model.getFwsx()+"</TD>");
%>
jsp+oracle 排序分页+Pageutil类的更多相关文章
- JSP+Oracle实现分页功能
Oracle: create table load( id char(200) not null, title varchar2(100) not null, time varchar2(100) n ...
- jsp分页代码之pageUtil类
pageUtil类负责得到每页的开始数和结束数 package control; public class PageUtil { private int pageSize;//每页显示的条数 priv ...
- Oracle rownum 分页, 排序
Oracle rownum 分页, 排序 什么是rownum, rownum的生成, rownum相关的符号操作 Rownum是oracle生成结果集时得到的一个伪列, 按照读出行的顺序, 第一条ro ...
- jsp+oracle实现数据库内容以表格形式在前台显示(包含分页)
jsp+oracle实现数据库内容以表格形式在前台显示(包含分页) 在文件夹内新增list_emp.jsp 代码如下: <%@ page contentType="text/html& ...
- 对于Oracle中分页排序查询语句执行效率的比较分析
转自:http://bbs.csdn.net/topics/370033478 对于Oracle中分页排序查询语句执行效率的比较分析 作者:lzgame 在工作中我们经常遇到需要在Oracle中进行分 ...
- PageUtil.java分页工具类
package com.chabansheng.util; /** * 分页工具类 * @author Administrator * */ public class PageUtil { /** * ...
- Oracle 数据库分页查询与排序分页查询
一.分页查询 原始查询语句 SELECT * FROM NASLE_WFSHH 修改为分页查询语句,加上 ROWNUM 列.此处为查询第 1 页,每页 9 条数据 SELECT * FROM ( SE ...
- aspnetpager+repeater+oracle实现分页功能
一.设计原理阐述 数据查询分页,这个功能相信大家都很熟悉,通过数据库或其它数据源进行查询操作后,将获得的数据显示到界面上,但是由于数据量太大,不能一次性完全的显示出来,就有了数据分页的需求.这个需求在 ...
- 工具类 分页工具类PageParamBean
自己编写的分页工具类,根据不同的数据库类型,生成对应的分页sql信息,分享给大家,希望大家共勉,工具类有些地方,大家可能不需要,请根绝自己的需要进行修改使用,核心逻辑都在,如果大家觉得有什么不妥,欢迎 ...
随机推荐
- cocos2d-x触摸分发器原理
屏幕捕捉到触摸消息的派发流程: 如果有一个组件如果想要接收触摸事件,会通过继承一个CCTouchDelegate接口注册给CCTouchDispatcher,CCTouchDispatcher 中维护 ...
- css笔记10:多个id选择器/类选择器包含相同部分问题的探讨
有些时候,我们可以将多个class选择器或者id选择器,html选择器的共同部分提取出来,写在一起,这样的好处是是可以简化css文件 1.首先我们先看一段代码.css,如下: @charset &qu ...
- Xquartz远程访问linux
实验环境:mac 操作系统: OS X 10.9.4 Mavericksmac IP 192.168.1.106XQuartz: ...
- [转]在 Windows Server 2012 上安装 IIS 8
本文转自:http://www.starland.net.cn/blog/view/158/1.aspx 本文译自:http://learn.iis.net/page.aspx/1088/instal ...
- loadrunner做webservice接口之简单调用
今天听大神讲了webservice做接口,我按照他大概讲的意思自己模拟实战了下,可能还有很多不对,一般使用webservice做接口,会使用到soapui,但是用了loadrunner以后发现lr很快 ...
- winform 渐变(非API)
public FrmMain() { InitializeComponent(); //窗体显示特效 Opacity = 0.0; //窗体透明度为0 fadeTimer.Start(); //计时开 ...
- php学习-快速开发框架thinkphp-day1
以下操作针对windows系统. 1.下载thinkphp3.23-all并解压 官方网站: http://www.thinkphp.cn/down.html 2.开发工具使用phpstorm htt ...
- sqlsever 关于索引
索引: 在sqlserver中,存储的单位最小是页,页是不可再分的B树:初衷是减少对磁盘的扫描次数,如果一个表或者索引没有使用B树(对于没有聚集索引的表是使用 Heap 堆进行存储的),那么查找一个数 ...
- MSSQL AlwaysOn中的“主角色中的连接”和“可读辅助副本”初探
一.开篇 在进行配置只读路由的时候,需要进行配置可用性组中的可用性副本,如下如所示: 每一项都是啥意思可以看看这个链接 https://msdn.microsoft.com/zh-cn/library ...
- CSS常用中文字体、字号
字体(font-family): 新细明体:PMingLiU 细明体:MingLiU 标楷体:DFKai-SB 黑体:SimHei 宋体:SimSun 新宋体:NSimSun 仿宋:FangSong ...