前提
各个数据库分页语句不一样,已MYSQL语句为例
SELECT * FROM book b limit 3 , 5
表示从book表中的第三条数据开始 连续读出5条数据.
开始
- 在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;
}
}
-
在servlet中获取currentPage 默认为1
并进行一些必要的判断 -
在bookservice query中传入user_id 和pagination对象
-
进入Dao层次进行数据查询
DAO
query(int userId,Pagination pagination)
getTotalCount(userId)
- 返回数据
网友评论