MSSQL SYBASE下面用top 来分页
POSTGRESQL MYSQL就直接用limit更简单了
在oracle 下面有4种方法
oracle分页技术2007年08月13日 星期一 23:08两种分页技术,第二种效率高多了
1. select * from
(select rownum rn,t.* from table t )
where rn <50 and rn>=1
2. select * from
(select rownum rn,t.* from table t rownum<50)
where rn>=1
带排序要求的分页,在9i以上的环境推荐使用分析函数
select * from
(select row_number() over(order by esn) rn,esn,akey from as_esn_info )
where rn <50 and rn>=1
(以上方法验证过)
或者以下
(1)minus差分页 :select * from table where rownum<=10 minus select * from table where rownum<=5
(2)rownum伪列分页 :select * from (select rownum tid,t.* from table t where rownum<=10) where tid>5
(3)notin相反分页:select * from table where id not in(select id from table where rownum<=5) and rownum<=5
下面是第二种方法的java实现:
import java.util.List;
import javax.sql.DataSource;
import org.springframework.jdbc.core.JdbcTemplate;
/**
*
* @author renshui
* 对oracle查询进行分页
*
*/
public class Pagination {
private int totalRow; //总记录数
private int totalPage; //总页数
private int currentPage = 1; //当前页码,从1计起
private int numPerPage; //每页记录数
private DataSource dataSource; //数据源
private JdbcTemplate jdbcTemplate; //spring jdbcTemplate
private String sql; //查询语句
public Pagination(String sql,int numPerpage,DataSource dataSource){
this.setSql(sql);
this.setNumPerPage(numPerpage);
jdbcTemplate = new JdbcTemplate(dataSource);
String totalSql = "select count(1) from (" + sql + ")";
this.setTotalRow(jdbcTemplate.queryForInt(totalSql)); //设置总行数
this.setTotalPage(); //计算总页数
}
/**
* 取得下一页内容
* @return 下页内容的列表
*/
public List getNextPage(){
if(currentPage > totalPage)
return null;
int startIndex = (currentPage-1) * numPerPage + 1;
int endIndex = 0;
if(currentPage == totalPage)
endIndex = totalRow;
else
endIndex = currentPage * numPerPage;
StringBuffer paginationSQL = new StringBuffer(" SELECT * FROM ( ");
paginationSQL.append(" SELECT temp.* ,ROWNUM num FROM ( ");
paginationSQL.append(sql);
paginationSQL.append(" ) temp where ROWNUM <= " + endIndex);
paginationSQL.append(" ) WHERE num >= " + startIndex);
System.out.println(paginationSQL.toString());
List list = jdbcTemplate.queryForList(paginationSQL.toString());
currentPage++;
return list;
}
public int getCurrentPage() {
return currentPage;
}
public void setCurrentPage(int currentPage) {
this.currentPage = currentPage;
}
public DataSource getDataSource() {
return dataSource;
}
public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
}
public int getNumPerPage() {
return numPerPage;
}
public void setNumPerPage(int numPerPage) {
this.numPerPage = numPerPage;
}
public int getTotalPage() {
return totalPage;
}
public void setTotalPage() {
if(totalRow%numPerPage == 0)
totalPage = totalRow / numPerPage;
else
totalPage = totalRow / numPerPage + 1;
}
public int getTotalRow() {
return totalRow;
}
public void setTotalRow(int totalRow) {
this.totalRow = totalRow;
}
public String getSql() {
return sql;
}
public void setSql(String sql) {
this.sql = sql;
}
}
分享到:
相关推荐
在这个"java实现的一个分页程序"中,我们可以探讨几个关键知识点: 1. **JDBC分页**:Java中的分页通常通过Java Database Connectivity (JDBC) API来实现。使用PreparedStatement和Statement对象,我们可以在SQL...
本篇文章将重点讨论如何使用Java JDBC和Oracle数据库实现面向对象的分页查询。 首先,我们需要了解面向对象编程的基本概念。面向对象编程(Object-Oriented Programming, OOP)是一种编程范式,强调用对象来表示...
本实践将深入探讨Oracle SQL分页的实现方法。 首先,我们要了解Oracle中的基本分页查询方式。在Oracle 9i及更高版本中,可以使用ROWNUM伪列进行分页。ROWNUM是在查询结果集生成时被赋予的数值,表示行的顺序。例如...
在Java编程中,连接Oracle数据库并实现分页显示是一项常见的任务。这涉及到对数据库的查询操作,特别是当数据量较大时,为了提高用户体验和系统性能,分页展示数据显得尤为重要。Oracle数据库支持多种方式进行分页,...
在Java编程中,分页是数据管理中一个...综上所述,实现Java小程序的分页功能涉及后端的数据库查询优化、ORM框架的使用,以及前端的交互设计。通过合理的分页策略,可以有效地处理大数据,提升用户对应用程序的满意度。
JDBC是Java API,它提供了一套标准接口,使得Java程序可以与各种类型的数据库进行交互。Oracle是常用的商业关系型数据库管理系统,它支持JDBC连接。 要实现分页查询,我们通常会用到以下关键步骤: 1. **建立...
本主题将深入探讨Oracle数据库级分页的原理以及如何在Java项目中应用。 首先,理解数据库级分页的含义。数据库级分页是指在数据库服务器端进行数据的分块处理,而不是一次性获取所有数据,然后在应用程序中进行分页...
本项目着重讲解如何在Spring MVC环境中,结合JDBC技术,实现对Oracle数据库的分页查询功能,并通过Ajax进行动态加载,提升用户体验。此外,我们还将涉及LigerUI和jEditable两个前端库,以增强用户界面和交互性。 ...
总的来说,"SSH+ORACLE好用分页"表明了在Java Web开发中,通过SSH框架与Oracle数据库的集成,可以实现高效且便捷的数据分页功能。这种结合充分利用了SSH的灵活性和Oracle的高性能,为开发者提供了强大且可靠的开发...
整体来看,这些知识点覆盖了Oracle数据库结构定义、数据操作优化、以及Java环境中的数据库编程,非常适合想要在Oracle数据库上构建Java应用程序的开发者学习。通过对本节内容的深入学习,可以有效掌握在Java应用程序...
在Oracle数据库中实现分页查询是一项常见的需求,特别是在开发Web应用程序时,为了提高用户体验,通常需要展示大量的数据,并且能够按页浏览。本篇将详细讲解如何使用Oracle SQL语句来实现分页功能。 首先,我们...
在本文中,我们将探讨如何使用JSP和Oracle数据库来实现一个简单的分页功能。分页是Web应用程序中常见的需求,特别是在处理大量数据时,它能够提高用户体验,避免一次性加载过多数据导致页面响应变慢。 首先,我们...
根据提供的信息,我们可以详细解析如何在Oracle数据库中创建一个包,并在该包内定义一个存储过程来实现分页功能。这种做法通常用于处理大量数据时,以提高查询效率和用户体验。 ### Oracle包与存储过程 #### 一、...
本文将深入探讨如何使用Struts、Oracle数据库和JDBC技术实现分页功能,以提高应用程序的性能和用户体验。 首先,我们要了解分页的基本概念。分页是一种将大量数据分割成多个小部分(页)进行展示的技术,使得用户...
总的来说,"SSH+Oracle通用分页"是Java Web开发中常见的需求,它涉及到SSH框架的集成使用和Oracle数据库的高效查询策略。理解并熟练掌握这些知识,对于开发高性能、用户体验良好的Web应用至关重要。在实际项目中,还...
总的来说,"spring+ibatis+oracle分页缓存源码"项目展示了如何在Spring管理的环境中,利用iBatis和Oracle数据库实现高效的数据分页和缓存策略。通过理解和实践这些技术,开发者可以构建出更加健壮、响应快速的Web...
对于初学者来说,这是一个很好的学习起点,可以理解分页的基本原理和实现方法。同时,它也提供了改进的空间,比如可以引入更高效的数据访问框架如MyBatis或Hibernate,或者添加更多的功能,如搜索、排序等。 总的来...
在"oracle分页及java.txt"文档中,可能会讲解如何在Java应用程序中利用JDBC处理这些分页查询。Java中,我们可以使用`PreparedStatement`来设置SQL语句中的占位符,并传递参数: ```java String sql = "SELECT * ...
2. ROW_NUMBER() over()分页:Oracle 10g及以上版本引入了窗口函数ROW_NUMBER(),它可以为查询结果集的每一行分配一个唯一的行号。结合PARTITION BY和ORDER BY子句,我们可以实现更灵活的分页。以下是一个示例: ``...
Oracle数据库在处理大数据量时,分页查询...在Java和ASP.NET中调用Oracle存储过程,可以方便地在应用程序中实现分页功能。通过理解这些知识点,你可以有效地优化你的Oracle数据库应用,提升用户体验并减轻服务器负载。