Oracle分页例子

原创 2007年09月27日 11:18:00

package test;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import cc.yiyao.dbConn.JdbcUtil;

public class Test2 {

 //Oracle分页  //Oracle分页 //Oracle分页
 
 //分页调用例子
 public static void main(String[] args) {
  List list = new ArrayList();
  int totalPage = splitPage(list,3,3);
  System.out.println("totalPage="+totalPage);
     for(int i=0; i<list.size();i++){
      ChannelBean bean = (ChannelBean)list.get(i);
      System.out.println("channelId="+bean.getChannelID()+", channel name="+bean.getChannelName());
     }
 }
 
    // 返回总共的页数,list为输出参数(即将list装满后返回,在程序中可以直接使用)
    public  static int splitPage(List list,int pageNo,int pageSize){
   /*取2-4条数据例子:
    * String sql = "select * from (select ROWNUM r,t1.* from  (select * from coUser order by coUserId desc) t1 where rownum<=4) t2  where t2.r>=2 and t2.r<=4";
    *
    */
     if(pageNo<1){
      pageNo = 1;    
     }
     String sql1 = "select count(*) from channel";
     Connection conn = JdbcUtil.getConnection();
     Statement stmt = null;
     ResultSet rs = null;
     int count = 0;
     try {
   stmt = conn.createStatement();
   rs = stmt.executeQuery(sql1);
   if(rs.next()){
       count = rs.getInt(1);
      }
    } catch (SQLException e) {
   // TODO 自动生成 catch 块
   e.printStackTrace();
    }finally{
     try {
    if(rs != null){
       rs.close();
       rs = null;
      }
    if(stmt != null){
     stmt.close();
     stmt = null;
      }
   } catch (SQLException e) {
    // TODO 自动生成 catch 块
    e.printStackTrace();
   }
    }
     int totalPage = (count%pageSize==0)? count/pageSize:count/pageSize+1;  //数据库的总页数
    
     if(pageNo > totalPage){
      pageNo = totalPage;
     }
    
     // 判断开开始位置
     int startPos = (pageNo-1)*pageSize + 1;
    
     //判断结束位置
     int endPos = pageNo*pageSize;
     if(endPos > count){  //大于总记录数
      endPos = count;
     }
    String sql2 = "select * from  "+
                                "(select rownum r,t1.* from  "+
                                    "   (select * from channel order by channelID desc) t1 "+
                                  " where rownum<= "+ endPos+") t2 "+   //4= pageNo*pageSize
                     " where t2.r>="+startPos+" and t2.r<="+endPos;      //
   
    Statement stmt2 = null;
    ResultSet rs2 = null;
   
    try {
     stmt2 = conn.createStatement();   
     rs2 = stmt2.executeQuery(sql2);
     while(rs2.next()){
       //将对象插入到list中
    
        ChannelBean bean = new ChannelBean();
              bean.setChannelID(rs2.getInt("channelID"));  //取出包含r(rownum)了,所以要指定字段名
        bean.setChannelCode(rs2.getString("ChannelCode"));
        bean.setChannelName(rs2.getString("ChannelName"));
        bean.setParentIDCode(rs2.getString("ParentIDCode"));
        bean.setChannelInfo(rs2.getString("ChannelInfo"));
        bean.setCreateDate(rs2.getString("CreateDate"));
     
      list.add(bean);
       }
     } catch (SQLException e) {
    // TODO 自动生成 catch 块
    e.printStackTrace();
     }finally{
      try {
      if(rs2 != null){
         rs2.close();
         rs2 = null;
        }
      if(stmt2 != null){
       stmt2.close();
       stmt2 = null;
       }
      if(conn != null){
       conn.close();
       conn = null;
       }
     } catch (SQLException e) {
      // TODO 自动生成 catch 块
      e.printStackTrace();
     }
      }
   
    return totalPage;
    }
}
 

Oracle 高效分页存储过程实例 含javademo

关于分页,想必是每一程序猿都会遇到的问题,jiexialai
  • tmctle
  • tmctle
  • 2014-07-04 23:34:01
  • 924

oracle数据库分页查询原理与事例实现(五六种方法)

–如何获取雇员表中薪水最高的前5人? SELECT * FROM( SELECT * FROM emp ORDER BY sal DESC) WHERE Rownum...
  • a254723077
  • a254723077
  • 2017-01-08 22:47:36
  • 1806

Mybatis封装分页查询的java公用类(oracle)

原文地址:http://blog.csdn.net/fhadmin24/article/details/47056107 Mybatis封装分页查询的java公用类 分页----对于数据量很大的...
  • xiyang_1990
  • xiyang_1990
  • 2017-01-14 23:08:49
  • 1027

mybatis-gen自动生成Mapper中加入分页 (MySQL和Oracle)

MySQL较为简单,由于有limit关键字可用,需要定义的是分页起始偏移offset和分页大小size 这里参考:http://www.cnblogs.com/AloneSword/p/341223...
  • edward9145
  • edward9145
  • 2014-03-19 15:26:17
  • 2964

Spring +Mybatis +oracle 实现数据库分页

设计思想: 1、分页sql与业务sql解耦合设计。 2、多线并发执行count(*)查询sql及分页sql。 3、站在巨人的肩膀上进行优化。 上代码: PageInterceptor...
  • chen978616649
  • chen978616649
  • 2015-10-27 17:42:28
  • 5779

oracle数据库表的分页

  • 2013年03月26日 16:46
  • 1KB
  • 下载

oracle中实现分页的方法!

分页技术是在B/S应用系统中最常见的技术之一,下面就所参加的工作流项目中所用到的分页技术加以实例说明:CREATE OR REPLACE procedure pro_SYS_fetch_by_page...
  • apicescn
  • apicescn
  • 2007-03-16 16:37:00
  • 2397

MySQL和Oracle分页的区别

MySQL和Oracle分页的区别 MySQL 分页 (利用LIMIT关键字) 计算参数为 开始序号(startNum),要查的总条数 (totalNum) Oracle 分页 (利用自带的rown...
  • jianshen0925
  • jianshen0925
  • 2016-12-05 09:23:26
  • 5405

【Oracle】——大数据下分页方法

最近工作非常的轻松,只是做了一些小功能oracle显示分页,但是要求随着数据量的加大,不能影响系统的查询速度,这也就是要求小编在所有的解决方案中选择最好的一项。 小编先提供两种常用的分页方法 方法一、...
  • jiadajing267
  • jiadajing267
  • 2017-03-17 13:32:39
  • 1336

分页的封装——java实现(基于oracle)

分页的封装,java实现,基于Oracle数据库
  • AlvinNoending
  • AlvinNoending
  • 2015-01-20 21:33:24
  • 2906
收藏助手
不良信息举报
您举报文章:Oracle分页例子
举报原因:
原因补充:

(最多只允许输入30个字)