美文网首页程序员
分页如何实现

分页如何实现

作者: stutterr | 来源:发表于2017-07-19 22:44 被阅读52次

    前提

    各个数据库分页语句不一样,已MYSQL语句为例

    SELECT * FROM book b limit 3 , 5
    表示从book表中的第三条数据开始 连续读出5条数据.

    开始

    1. 在model包中创建一个pagination model
    package com.gavin.exam.model;
    
    import com.gavin.exam.util.PropertyUtil;
    
    public class Pagination {
    
        private static final String KEY_PAGE_SIZE = "pagination.pageSize";
    
        private int totalCount;
    
        private int pageSize;  //每一页的数量  在外部定义
        private int pageCount;  //总共多少页  不提供set方法只提供get方法
                                //因为具体的可以通过totalCount和pageSize算出来
    
        private int currentPage; //当前第几页
        private int offset;   //偏移量
    
        public int getTotalCount() {
            return totalCount;
        }
    
        public void setTotalCount(int totalCount) {
            this.totalCount = totalCount;
        }
    
        public int getPageSize() {
            if(pageSize == 0) {
                String size = PropertyUtil.getProperty(KEY_PAGE_SIZE);
                pageSize = Integer.parseInt(size);
            }
            return pageSize;
        }
    
        public void setPageSize(int pageSize) {
            this.pageSize = pageSize;
        }
    
        public int getPageCount() {
            if (totalCount < 1) {
                pageCount = 0;
                return pageCount;
            }
            pageCount = (totalCount - 1) / getPageSize() + 1;   //totalCount-1考虑到整除的情况
            return pageCount;
        }
    
        public int getCurrentPage() {
            if (currentPage < 1) {
                currentPage = 1;
            }
            return currentPage;
        }
    
        public void setCurrentPage(int currentPage) {
            this.currentPage = currentPage;
        }
    
        public int getOffset() {
            offset = (getCurrentPage() - 1) * getPageSize();
            return offset;
        }
    }
    
    1. 在servlet中获取currentPage 默认为1
      并进行一些必要的判断

    2. 在bookservice query中传入user_id 和pagination对象

    3. 进入Dao层次进行数据查询

    DAO

    1. query(int userId,Pagination pagination)
    2. getTotalCount(userId)
    3. 返回数据

    相关文章

      网友评论

        本文标题:分页如何实现

        本文链接:https://www.haomeiwen.com/subject/eurrkxtx.html