`
tshebei
  • 浏览: 44223 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

oracle分页方法及java程序实现

    博客分类:
  • java
阅读更多
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实现的一个分页程序

    在这个"java实现的一个分页程序"中,我们可以探讨几个关键知识点: 1. **JDBC分页**:Java中的分页通常通过Java Database Connectivity (JDBC) API来实现。使用PreparedStatement和Statement对象,我们可以在SQL...

    JAVA_JDBC面向对象分页(初步设计二之oracle)

    本篇文章将重点讨论如何使用Java JDBC和Oracle数据库实现面向对象的分页查询。 首先,我们需要了解面向对象编程的基本概念。面向对象编程(Object-Oriented Programming, OOP)是一种编程范式,强调用对象来表示...

    Oracle的SQL分页实践

    本实践将深入探讨Oracle SQL分页的实现方法。 首先,我们要了解Oracle中的基本分页查询方式。在Oracle 9i及更高版本中,可以使用ROWNUM伪列进行分页。ROWNUM是在查询结果集生成时被赋予的数值,表示行的顺序。例如...

    java连接Oracle分页显示

    在Java编程中,连接Oracle数据库并实现分页显示是一项常见的任务。这涉及到对数据库的查询操作,特别是当数据量较大时,为了提高用户体验和系统性能,分页展示数据显得尤为重要。Oracle数据库支持多种方式进行分页,...

    java小程序实现分页的功能

    在Java编程中,分页是数据管理中一个...综上所述,实现Java小程序的分页功能涉及后端的数据库查询优化、ORM框架的使用,以及前端的交互设计。通过合理的分页策略,可以有效地处理大数据,提升用户对应用程序的满意度。

    使用jdbc_oracle实现的分页功能

    JDBC是Java API,它提供了一套标准接口,使得Java程序可以与各种类型的数据库进行交互。Oracle是常用的商业关系型数据库管理系统,它支持JDBC连接。 要实现分页查询,我们通常会用到以下关键步骤: 1. **建立...

    oracle数据库级分页(java)

    本主题将深入探讨Oracle数据库级分页的原理以及如何在Java项目中应用。 首先,理解数据库级分页的含义。数据库级分页是指在数据库服务器端进行数据的分块处理,而不是一次性获取所有数据,然后在应用程序中进行分页...

    spring mvc实现Oracle分页

    本项目着重讲解如何在Spring MVC环境中,结合JDBC技术,实现对Oracle数据库的分页查询功能,并通过Ajax进行动态加载,提升用户体验。此外,我们还将涉及LigerUI和jEditable两个前端库,以增强用户界面和交互性。 ...

    SSH+ORACLE好用分页

    总的来说,"SSH+ORACLE好用分页"表明了在Java Web开发中,通过SSH框架与Oracle数据库的集成,可以实现高效且便捷的数据分页功能。这种结合充分利用了SSH的灵活性和Oracle的高性能,为开发者提供了强大且可靠的开发...

    老二牛车在Oracle数据库上构建JAVA应用程序二理论课.pdf

    整体来看,这些知识点覆盖了Oracle数据库结构定义、数据操作优化、以及Java环境中的数据库编程,非常适合想要在Oracle数据库上构建Java应用程序的开发者学习。通过对本节内容的深入学习,可以有效掌握在Java应用程序...

    oracle实现分页

    在Oracle数据库中实现分页查询是一项常见的需求,特别是在开发Web应用程序时,为了提高用户体验,通常需要展示大量的数据,并且能够按页浏览。本篇将详细讲解如何使用Oracle SQL语句来实现分页功能。 首先,我们...

    jsp+oracle实现简单的分页

    在本文中,我们将探讨如何使用JSP和Oracle数据库来实现一个简单的分页功能。分页是Web应用程序中常见的需求,特别是在处理大量数据时,它能够提高用户体验,避免一次性加载过多数据导致页面响应变慢。 首先,我们...

    oracle包用存储过程图分页

    根据提供的信息,我们可以详细解析如何在Oracle数据库中创建一个包,并在该包内定义一个存储过程来实现分页功能。这种做法通常用于处理大量数据时,以提高查询效率和用户体验。 ### Oracle包与存储过程 #### 一、...

    sturts+oracle+jdbc实现分页

    本文将深入探讨如何使用Struts、Oracle数据库和JDBC技术实现分页功能,以提高应用程序的性能和用户体验。 首先,我们要了解分页的基本概念。分页是一种将大量数据分割成多个小部分(页)进行展示的技术,使得用户...

    SSH+ORACLE通用分页

    总的来说,"SSH+Oracle通用分页"是Java Web开发中常见的需求,它涉及到SSH框架的集成使用和Oracle数据库的高效查询策略。理解并熟练掌握这些知识,对于开发高性能、用户体验良好的Web应用至关重要。在实际项目中,还...

    spring+ibatis+oracle分页缓存源码

    总的来说,"spring+ibatis+oracle分页缓存源码"项目展示了如何在Spring管理的环境中,利用iBatis和Oracle数据库实现高效的数据分页和缓存策略。通过理解和实践这些技术,开发者可以构建出更加健壮、响应快速的Web...

    用java写的分页程序

    对于初学者来说,这是一个很好的学习起点,可以理解分页的基本原理和实现方法。同时,它也提供了改进的空间,比如可以引入更高效的数据访问框架如MyBatis或Hibernate,或者添加更多的功能,如搜索、排序等。 总的来...

    oracle分页技术.rar

    在"oracle分页及java.txt"文档中,可能会讲解如何在Java应用程序中利用JDBC处理这些分页查询。Java中,我们可以使用`PreparedStatement`来设置SQL语句中的占位符,并传递参数: ```java String sql = "SELECT * ...

    oracle分页源码

    2. ROW_NUMBER() over()分页:Oracle 10g及以上版本引入了窗口函数ROW_NUMBER(),它可以为查询结果集的每一行分配一个唯一的行号。结合PARTITION BY和ORDER BY子句,我们可以实现更灵活的分页。以下是一个示例: ``...

    oracle分页查询

    Oracle数据库在处理大数据量时,分页查询...在Java和ASP.NET中调用Oracle存储过程,可以方便地在应用程序中实现分页功能。通过理解这些知识点,你可以有效地优化你的Oracle数据库应用,提升用户体验并减轻服务器负载。

Global site tag (gtag.js) - Google Analytics