Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 1133|回复: 0

用于分页显示的类Pageable.java

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2011-6-6 14:08:48 | 显示全部楼层 |阅读模式

    package cn.edu.bit.Object;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    /**
    *用于分页的类
    */
    public class Pageable {
    private int pageSize;  //定义每页显示数
    private int totalRows; //结果集的总行数
    private int totalPages; //结果集的总页数
    private static int currentPage; //当前页
    private int rowsCount; //数据库游标指向的行

    public Pageable(ResultSet rs){ //构造函数
      try{
       rs.last();    //将数据库游标指向结果集的最后
      }catch(SQLException e){
       e.printStackTrace();  
      }
      try{
       this.setTotalRows(rs.getRow()); //得到结果集的总行数
      }catch(SQLException e){
       e.printStackTrace();
      }
      try{
       rs.beforeFirst(); //将数据库游标指向结果集的最前
      }catch(SQLException e){
       e.printStackTrace();
      }
    }

    public void setPageSize(int pageSize) {  //设置分页的大小
      if(pageSize >= 0){
         this.pageSize = pageSize;
      }else{
       this.pageSize = 1;
      }
    }

    public void gotoPage(int page){ //转到指定页
      switch(page){
      case -1:
       this.setCurrentPage(1);//如果转向首页,则将当前页置为第1页
       break;
      case -2:
       int t = this.getCurrentPage(); //如果转向上一页,则将当前页上移一页
       this.setCurrentPage(t-1);
       break;
      case -3:
       int n = this.getCurrentPage();//如果转向下一页,则将当前页下移一页
       this.setCurrentPage(n+1);
       break;
      case -4:
       //如果转向尾页,则将当前页转到与总页数相符的页
       this.setCurrentPage(this.getTotalPages());
       break;
       default:
        this.setCurrentPage(page);//如果转向其他页,则将当前页置为相应的页数
      }
    }

    public void setCurrentPage(int page) {  //设置当前页
      if(page <= 0) //当前号位0或者负数时,则当前页为第1页
        this.currentPage = 1;
      if(page > this.getTotalPages()) //当页号大于实际总页数时,当前页为总页数
       this.currentPage = this.getTotalPages();
      else
       this.currentPage = page; //在其他情况下,当前页置为给定的页号
      //设置数据库游标指向位置,即从哪条数据开始读取
      this.setRowsCount((this.currentPage-1)*this.getPageSize()+1);
      System.out.println(this.getRowsCount());
    }
    public int getCurrentPageRowsCount(){  //返回当前页的记录条数
      if(this.getPageSize() == 0) //如果页数为0,则返回就是所有的记录数
       return this.getTotalRows();
      if(this.getTotalRows() == 0)  //如果所有的记录数位0,则返回0
       return 0;
      if(this.getCurrentPage() != this.getTotalPages()) //如果当前页序不等于总页数
       return this.getPageSize(); //返回每页的显示数
      return this.getTotalRows()-(this.getTotalPages()-1)*this.getPageSize();
      
    }

    public void setTotalPages(int totalPages) {  //设置总页数
      if(this.getTotalRows() == 0){
       this.totalPages = 0;
      }else if(this.getPageSize() == 0){
       this.totalPages = 1;
      }else{
       if(this.getTotalRows()%this.getPageSize() != 0) //如果所有记录数除每页显示数的余数为0,
        this.totalPages = this.getTotalRows()/this.getPageSize()+1;
          else //如果所有记录数除每页的显示数为0
           this.totalPages = this.getTotalRows()/this.getPageSize();
      }
    }

    public void pageFirst() throws java.sql.SQLException{ //转到当前页的最前一条记录
      this.setRowsCount((this.getCurrentPage()-1)*this.getPageSize()+1);
    }

    public void pageLast() throws java.sql.SQLException{ //转到当前页的最好一条记录
      this.setRowsCount((this.getCurrentPage()-1)*this.getPageSize()+this.getCurrentPageRowsCount());
    }

    public static int getCurrentPage() {
      return currentPage;
    }
    public int getPageSize() {
      return pageSize;
    }
    public int getRowsCount() {
      return rowsCount;
    }
    public void setRowsCount(int rowsCount) {
      this.rowsCount = rowsCount;
    }
    public int getTotalPages() {
      return totalPages;
    }
    public int getTotalRows() {
      return totalRows;
    }
    public void setTotalRows(int totalRows) {
      this.totalRows = totalRows;
    }
    }


    回复

    使用道具 举报

    该用户从未签到

    发表于 2011-10-9 08:31:31 | 显示全部楼层
    谢谢楼主分享啊。
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-1-10 20:13 , Processed in 0.351847 second(s), 36 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表