前段时间因为需要所以写一个JavaWeb+MySql的分页封装类,附上代码。技术有限写得不好请多多指教。

1.首先贴上Eneity类

package com.zx.pageUtil;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List; /**
* <b> 分页工具类 </b>
* @author zhangxiang
*
*/
public class Pager implements Serializable {
private static final long serialVersionUID = 4542617637761955078L; /**
* currentPage 当前页
*/
private int currentPage = 1;
/**
* pageSize 每页大小
*/
private int pageSize = 5;
/**
* pageTotal 总页数
*/
private int pageTotal;
/**
* recordTotal 总条数
*/
private int recordTotal = 0;
/**
* previousPage 前一页
*/
private int previousPage;
/**
* nextPage 下一页
*/
private int nextPage;
/**
* firstPage 第一页
*/
private int firstPage = 1;
/**
* lastPage 最后一页
*/
private int lastPage;
/**
* 页号式导航, 起始页号
*/
private int startPage;
/**
* 页号式导航, 结束页号
*/
private int endPage;
/**
* 页号式导航, 最多显示页号数量为numCount+1;这里显示11页。
*/
private int numCount = 10;
/**
* 要显示的页号
*/
public List<Integer> showPagesNum = new ArrayList<Integer>(); // 以下set方式是需要赋值的 不需要全部生成set
/**
* 设置当前页 <br>
* @param currentPage
*/
public void setCurrentPage(int currentPage) {
this.currentPage = currentPage;
} /**
* 设置每页大小,也可以不用赋值,默认大小为10条 <br>
* @param pageSize
*/
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
} /**
* 设置总条数,默认为0 <br>
* @param recordTotal
*/
public void setRecordTotal(int recordTotal) {
this.recordTotal = recordTotal;
otherAttr();
} /**
* 设置其他参数
*/
public void otherAttr() {
// 总页数
this.pageTotal = this.recordTotal % this.pageSize > 0 ? this.recordTotal / this.pageSize + 1 : this.recordTotal / this.pageSize;
// 第一页
this.firstPage = 1;
// 最后一页
this.lastPage = this.pageTotal;
// 前一页
if (this.currentPage > 1) {
this.previousPage = this.currentPage - 1;
} else {
this.previousPage = this.firstPage;
}
// 下一页
if (this.currentPage < this.lastPage) {
this.nextPage = this.currentPage + 1;
} else {
this.nextPage = this.lastPage;
} // 计算page 控制
/**
计算数字翻页起始数字从哪一个开始 ,因为我们默认的是需要显示10个翻页数字(加上本页等于11页)
startPage是起始翻页数字,所以需要个根据本页向前显示5个翻页数字 例如本页是 6 那么就是 1 2 3 4 5 6(本页)
同时需要判断是不是第一页,第一页不需要向前显示翻页数字。
this.currentPage - numCount / 2 只要本页不大于6 它的数字翻页始终从1开始,7就从2开始 8就从3开始 以此类推
*/
startPage = Math.max(this.currentPage - numCount / 2, firstPage);
endPage = Math.min(startPage + numCount, lastPage);
/**
查看所有的数字翻页是否大于设置的默认数字翻页个数
如果不大于 那就说明总的页数小于默认设置要显示的数字翻页的个数或者等于
那么就从第1页的数字翻页开始显示 一直到总的页数
*/
if (endPage - startPage < numCount) {
startPage = Math.max(endPage - numCount, 1);
}
/**
编写数字翻页集合利于页面迭代取出相应的数字翻页。
*/
for(int i = startPage; i <= endPage; i++){
showPagesNum.add(i);
}
} // 放开私有属性
public int getCurrentPage() {
return currentPage;
} public int getPageSize() {
return pageSize;
} public int getPageTotal() {
return pageTotal;
} public int getRecordTotal() {
return recordTotal;
} public int getPreviousPage() {
return previousPage;
} public int getNextPage() {
return nextPage;
} public int getFirstPage() {
return firstPage;
} public int getLastPage() {
return lastPage;
} public int getStartPage() {
return startPage;
} public int getEndPage() {
return endPage;
} public int getNumCount() {
return numCount;
} public List<Integer> getShowPagesNum() {
return showPagesNum;
} @Override
public String toString() {
return "Pager [currentPage=" + currentPage + ", pageSize=" + pageSize
+ ", pageTotal=" + pageTotal + ", recordTotal=" + recordTotal
+ ", previousPage=" + previousPage + ", nextPage=" + nextPage
+ ", firstPage=" + firstPage + ", lastPage=" + lastPage
+ ", startPage=" + startPage + ", endPage=" + endPage + "]";
}
}

2.与数据库交互代码,我这边用的是Spring JDBC。注意一下这里只是部分代码,相信贴出这段代码你就知道如何做

@Override
public List<User> getUserList(Pager pager) {
String sql = "select * from user limit ?,? ";
this.getJdbcTemplate().query(sql,new Object[] {(pager.getCurrentPage()*pager.getPageSize()-pager.getPageSize()),pager.getPageSize()});
return null;
}

3.jsp代码选择翻页导航代码,由于样式中含有背景图,所以没有办法给到

<div class="member-pages clearfix">
<div class="fr pc-search-g" >
<c:if test="${pager.currentPage >1 }">
<a href="addressView?currentPage=${pager.previousPage }" class="pc-search-n" >上一页</a>
</c:if>
<c:forEach items="${pager.showPagesNum}" var="showPages">
<a href="addressView?currentPage=${showPages }" <c:if test="${pager.currentPage == showPages}">class="current"</c:if>>${showPages }</a>
</c:forEach>
<c:if test="${pager.currentPage < pager.pageTotal }">
<span class="pc-search-di">…</span>
<a href="addressView?currentPage=${pager.nextPage }" class="pc-search-n" >下一页</a>
</c:if>
<form action="addressView" id="subform" method="post" style="display:inline;">
<span class="pc-search-y">
<em> 共${pager.pageTotal }页 到第</em>
<input type="text" name="currentPage" placeholder="${pager.currentPage }" class="pc-search-j">
<em>页</em>
<a class="confirm" href="javascript:;" onclick="document.getElementById('subform').submit();return false">确定</a>
</span>
</form>
</div>
</div>

最后这里贴上效果图:

图1

aaarticlea/png;base64,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" alt="" />

图2

aaarticlea/png;base64,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" alt="" />

最新文章

  1. C练习
  2. jQuery源码分析系列(33) : AJAX中的前置过滤器和请求分发器
  3. [Asp.net 5] Options-配置文件之后的配置
  4. tcpdf最新版 6.2版
  5. Redis 1:简介
  6. ALTER TABLE 语句与 FOREIGN KEY 约束&quot;FK_SCHEDULE_REFERENCE_POSTCONF&quot;冲突。
  7. MEMS加速度计工作原理
  8. 51nod 1244 莫比乌斯函数之和(杜教筛)
  9. Java基础知识(一) 自增、自减运算符
  10. java基础学习——集合
  11. 【Unity Shaders】Reflecting Your World —— 在Unity3D中创建Cubemaps
  12. Replica Set + sharding搭建mongodb集群
  13. 练手——用Python写的时间戳转换为北京时间的小工具
  14. ajax 提交form格式 和 json格式
  15. mysql 小数转换成百分数查出(保留两位小数百分数)
  16. vuejs服务端渲染更好的SEO,SSR完全指南Nuxt.js静态站生成器
  17. C#中当程序的访问权限不足时,Directory.Exists和File.Exists方法不会抛出异常报错
  18. schema举例二
  19. Python3基础 dict fromkeys 多个键对应相同的值
  20. Java理论学时第四节。课后作业。

热门文章

  1. jeesite自定义主题
  2. redis-数据结构以及使用场景分析
  3. C#中Random
  4. js 中的定时器
  5. ACM_lowbit
  6. RecyclerView中item无法充满的问题
  7. 使用 RxJava 的正确姿势
  8. ibatis知识点
  9. Ruby开发环境的搭建
  10. MVC5+EasyUI+EF6+Linq通用权限系统出炉(1)