分页 算法

摘要:
˃列表;/***总记录*/privatetotalRecords/***每页显示次数*/privateintpageSize/***当前页面*/privateint currentPage;publicintgetCurrentPage(){returncurrentPage;}publicvoisetCurrentPage{this.currentPage=currentPage;}publicintgetPageSize(){returnpageSize;}publicvoisetPageSize{this.pageSize=pageSize;}publicList˂?

算法如下:

currentPage = (pageSize - 1) * pageSize                     //取得当前页

pageCount = (totalrecords + pageSize - 1) / pageSize  //取得所有页数

oracle 三层查询 完成分页 sql:

    select * from 
    (
        select rownum rn ,e.* from
        ( 
            select * from emp where deptno=1 order by empno desc
        ) e where rownum <=(currentPage * pageSize)
    ) where rn>(currentPage - 1) * pageSize);

mssql 二层查询 完成分页 sql:

select top 5 * from UserInfo where UserId not in
(
    select top 5 UserID from UserInfo order by UserID asc
) order by UserID asc

select top (pageSize) * from UserInfo where UserId not in 
(
    select top (currentPage-1)*pageSize UserID from UserInfo order by UserID asc
) order by UserID asc

mysql 一层查询 完成分页 sql:

select * from user where typeid=1 order by id desc limit (pageSize - 1) * pageSize,pageSize ;

最后就是用pageModel这个类完成分页的其他功能!(java类) php 和 C# 有自己的分页类

package com.fafa.mvc.tools;

import java.util.List;

/*
 * 分页模型
 */
public class PageModel {

    /**
     * 保存结果集
     */
    private List<?> list;

    /**
     * 总记录数
     */
    private int totalRecords;

    /**
     * 每页显示数
     */
    private int pageSize;

    /**
     * 当前页
     */
    private int currentPage;

    public int getCurrentPage() {
        return currentPage;
    }

    public void setCurrentPage(int currentPage) {
        this.currentPage = currentPage;
    }

    public int getPageSize() {
        return pageSize;
    }

    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }

    public List<?> getList() {
        return list;
    }

    public void setList(List<?> list) {
        this.list = list;
    }

    public int getTotalRecords() {
        return totalRecords;
    }

    public void setTotalRecords(int totalRecords) {
        this.totalRecords = totalRecords;
    }

    /**
     * 首页
     * @return
     */
    public int getIndexPage() {
        return 1;
    }

    /**
     * 上一页
     * @return
     */
    public int getPrePage() {
        //如果当前页小于等于1 那么=1
        if (this.currentPage <= 1){
            return 1 ;
        }
        return this.currentPage - 1 ;
    }

    /**
     * 下一页
     * @return
     */
    public int getNextPage() {
        //如果当前页大于等于最后一页那么=最后一页
        if (this.currentPage >= this.getEndPage()){
            return getEndPage() ;
        }
        return this.currentPage + 1;
    }

    /**
     * 尾页
     * @return
     */
    public int getEndPage() {
        return this.getPageCount();
    }

    /**
     * 总页数
     * @return
     */
    public int getPageCount() {
        // 总数 + 每页数量-1 / 每页数量
        return (this.totalRecords + this.pageSize - 1) / this.pageSize;
    }

}

免责声明:文章转载自《分页 算法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇SpringBoot22 Ajax跨域、SpringBoot返回JSONP、CSRF、CORSweb_reg_save_param_ex简介下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

数据库编程基本练习题

 1、用一条SQL语句查询出每门课都大于80分的学生姓名  准备数据的sql代码: create table score( id int primary key auto_increment, name varchar(20), subject varchar(20), score int); insert into score values (nul...

mybatis多表查询

Mybatis实现多表查询有三种方式: (需求:给一个实体类设置属性值,但该实体类的数据保存在数据库的两张表中) 1,分别对两张表进行查询,将获取到的数据分别赋值给实体类。 2,编写多表查询的sql语句,通过给查询到的数据设置与实体类相同的别名,使用Auto Mapping特性,将查询结果自动映射到实体类。 3,使用MyBatis的<resultMa...

Oracle中索引的使用 索引性能优化调整

索引是由Oracle维护的可选结构,为数据提供快速的访问。准确地判断在什么地方需要使用索引是困难的,使用索引有利于调节检索速度。 当建立一个索引时,必须指定用于跟踪的表名以及一个或多个表列。一旦建立了索引,在用户表中建立、更改和删除数据库时, Oracle就自动地维护索引。创建索引时,下列准则将帮助用户做出决定:        1) 索引应该在SQL语句的...

oracle 内置函数

oracle内置函数分为单行函数和聚合函数两大类 1、to_date 将字符转换为日期 select to_date('2008-08-08','yyyy-mm-dd') from dual; --2008/8/8 2.add_months 增加月份 select add_months(sysdate,2) from dual; --当前时间向后推2个月,...

Impala的安装和使用

通过本地yum源进行安装impala所有cloudera软件下载地址 http://archive.cloudera.com/cdh5/cdh/5/ http://archive.cloudera.com/cdh5/ 1、 impala的介绍imala基本介绍 impala是cloudera提供的一款高效率的sql查询工具,提供实时的查询效果,官方测试性能...

bootstrap-select 多选下拉框使用教程

http://silviomoreto.github.io/bootstrap-select/ 一、使用bootstrap-select组件时,先引用下列文件 最后一个文件defaults-zh_CN.min.js非必需,是组件中文化的时候才需要引用。 <!--Latest compiled and minified CSS --> <...