关于MySql的分页问题
分页时,最好先抽象出一个类,来保存关于分页的一些信息,如:1、结果集 2、总记录数 3、总页数 4、每页显示多少条记录数 5、当前页号
要提高系统的效率,必须
禁止频繁的访问数据库,因此需要访问一次数据库就把所有的结果集查上来,然后
在程序中进行分页
现在抽象出一个PageModel类,用于保存关于分页的一些信息,代码如下:
package com.qidian.util;
import java.util.List;
/**
* 封装分页逻辑
* @author Administrator
*
*/
public class PageModel<T> {
//结果集
private List<T> newslist;
//记录数
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 getBackPageNo(){
if(this.pageNo <= 1){
return 1;
}
return this.pageNo-1;
}
/**
* 下一页
* @return
*/
public int getNextPageNo(){
if(this.pageNo == getButtomPageNo()){
return getButtomPageNo();
}
return this.pageNo + 1;
}
/**
* 尾页
* @return
*/
public int getButtomPageNo(){
return getTotalPages();
}
public List<T> getNewslist() {
return newslist;
}
public void setNewslist(List<T> newslist) {
this.newslist = newslist;
}
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;
}
}
在程序中分页时,我用的是<c:forEach>标签 关键的代码如下:
<c:forEach items="${pageModel.newslist}" var="news" begin="${(pageModel.pageNo-1)*pageModel.pageSize}" end="${((pageModel.pageNo-1)*pageModel.pageSize)+2}">
</c:forEach>
然后在循环体中写出需要显示的内容
仍然还有很多需要改进的地方,慢慢的来,这是做项目的时候的一些总结,以前没有碰到关于分页的相关知识,所以总结一下,以后慢慢的完善!!!