分页算法

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);


mysql 二层查询 完成分页 sql:

select top 5 * from UserInfo where UserIdnot in
(
   select top 5 UserID from UserInfo order by UserID asc
) order by UserID asc
 
select top (pageSize) * from UserInfo whereUserId not in
(
   select top (currentPage-1)*pageSize UserID from UserInfo order by UserIDasc
)order by UserID asc


mysql 一层查询 完成分页 sql:

select * from user where typeid=1 order byid 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;
    }

}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值