您的位置:首页 > 编程语言 > Java开发

【Java技术点滴】——分页查询

2015-01-31 23:58 197 查看
    项目中我们会经常用到分页查询的功能,总结他们的特点,可归结如下
   


    从页面开始分析,我们可以提供的参数有:
        1.每页记录数
        2.查询的页数
   

    我们需要的返回值:
    1.实体集合(每页的记录)--结果集
    2.总共记录数
    3.总共多少页
    4.当前页数
    5.每页记录数
同时我们也需要通过对页号的操作,查询出不同的数据集显示。因此有必要知道上一页、下一页、首页、尾页等的信息,而且像这样的分页查询也会很常用。针对以上需求,我们封装了专门的实体,用于将分页查询的信息统一管理使用。

/**
* 封装分页信息
* @author Forrest
*
*/
public class PageModel<E> {
//每页的记录
private List<E> list;

//总共记录数
private int totalRecords;

//每页记录数
private int pageSize;

//当前页
private int pageNo;

/**
* 总页数
* @return
*/
public int getTotalPages(){
return (totalRecords + pageSize -1)/pageSize;
}

/**
* 返回首页页号
* @return
*/
public int getTopPageNo(){
return 1;
}

/**
* 返回上一页页号
* @return
*/
public int getPreviousPageNo(){
if(pageNo <= 1){
return 1;
}
return pageNo - 1;
}

/**
* 返回下一页页号
* @return
*/
public int getNextPageNo(){
if(pageNo >= getTotalPages()){
return getBottomPageNo();
}
return pageNo + 1;
}

/**
* 返回尾页页号
* @return
*/
public int getBottomPageNo(){
return getTotalPages();
}

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

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

public int getTotalRecords() {
return totalRecords;
}

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

public int getPageSize() {
return pageSize;
}

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

public int getPageNo() {
return pageNo;
}

public void setPageNo(int pageNo) {
this.pageNo = pageNo;
}
}

    对于分页查询的语句,也是有规律可以遵循的:
    三层查询嵌套
    最外层--行号限制:大于开始数据行号
    中间层--行号限制:小于等于结束数据行号
    最内层--查询出符合要求的结果集并排序

总结
通过上面简单的封装,便可以使我们的程序复用大部分分页功能的代码,封装的特性在这里得到了很好的体现,当然这些也是建立在对现实应用的观察以及一步步的抽象上的,体会到了面向对象的好处,也提醒了自己在以后的项目中努力去提取相类似的代码,将程序的实现化繁为简、灵活可控。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: