JavaWeb+MySql分页封装
前段时间因为需要所以写一个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,iVBORw0KGgoAAAANSUhEUgAAAakAAAA6CAYAAAAKqaYCAAAHtUlEQVR4nO3cv27bOhgF8LxRl/s0BTLdC+9ZNXpKJj2AhxbQFsBAB99AQ4HujT1UKtqgqIEO1ANcQG46+dwh/kPTlE1alPQpOj9AQJPGJkVTPCIl+erXr1/gxo0bN27cJG5XICIiEoohRUREYjGkiIhILIYUERGJxZAiIiKxGFJERCQWQ4qIiMRiSBERkVgMKSIiEoshRUREYjGkiIhILIYUERGJxZAiIiKxGFJERCQWQ4qIiMQaVEit12sURYEsyzCfzxvbsiyDUgrr9VpE2dK01RZdbH1of+n+/PkDpRSWy2Xnm1IKz8/PXTfJTp+OnVDHwqBCqigKfPv2DWVZNlpOWZZ4enpCURQiypamrbboQh/aXzqllJi+UZYllFJdV2OnT8dOqGNhUCGVZVlrH+5qtUKWZSLKlqbNtuiC9PaXbrlcdl2FA5Lq07djJ8SxMKiQms/nnZXXZdnSSK5bKEPYx6ZICgVAVn362K/q1pkh1VJ5DKk9yXULZQj72BRJoQDIqk8f+xVDygNDSgbJdQtlCPvYFEmhAMiqTx/7FUPKA0NKBsl1C2UI+9gUSaEAyKpPH/sVQ8oDQ0oGyXULZQj72BRJoQDIqk8f+9VwQmrxNzC6AkZ/X/wWDCkZnOv25RPevH2PK6ftHndffGvyiGvn95/hQxP7qEtjjOJU+0WOJIqQ5M5vgHg0wshpi5EevDZHElX8bZRgV4U8QaT9nMYjRGYFj/bDj6RQAHzqU6f93dQ+ro3P76Q0PvzsLzSMkJpcbQKq5ZAqZhhrHWuyuLw877IXE61DT+BZ9OsIKYuv7+7x5t3PgLUxPMxwdftY+20aDynX/uEdGPYy8yRCnOJwkMsTRJZAS2JzQPYJ2oAh9d93fJx+Rt2nnGrVp2Zgm9z7lRGYUYLcdiJinHA4Bazn/rzykPpXC6e2Q2qByWiM2fY5tGKGsf6zZ3leZRczjLWBp5iNMfJMSIaUq5+4uzkzi7r5hK/my/45fei47+OJGUzVjOZk/3B4v1Nnx2m8mxml8T5cjkPqpZw4TRHrs4I8QRSn9hmWoyAhpT5jOp1i2npI1Wz/M7yPnYrP03YyksYjnM2fzefrYxghtQAw+6vdkFpMjoJhMfGbTQVb7jMGJd+ypZEXUqeWCh9xXRVSJ4Kq1eW+g/5x7jUp4spB0vy//c9HIaUPVtq/8yTele006FnUDSn1eYrp9CO+qy5mUnXa/zzffpXGLycQeRIhjuOgS4+uXnlIadoOqSPGzMqzvDplcya19/XdPd7c3HtfI6pmhtRP3N3o730mpCqCqs2QOp5JmWfM+iBUPUjmSWQdxKIkd1/uCzAA9nu57/L2d+HVr/TPJ0qQa/1rP6vazoSbu57GkPJweWMVmI1HGPskFAKE1O6amF84XlxeS+qG1NXt48u1o7fvcf2g/efmd67by2sDhJQlqFoJKWv/CDFI6n+TI00rQurk62xlu2FIVfNeRt7Oerch5Rk6h0uETdfZjiF11gKTkX9AmeV1OYtzkcbHa+W23+VJVPuOn3DLfZu782rd6GCGlBlKjiFlBJXzPlYOHPbNvnym9w9zkKxewjuuSvWFcntIuZx9Dz2k3NvfhU+/iuJ4vzR7diZlrx9DykcXIbU5U/W9q89WXt0Pqs71MGlCX5P6cGvMqLwYIfUwM26UaHEmVcO+fxiD5NFtxL4zqRfWkDqa+dUbgLdeVUhd1P7VvJf7fGdSxmdqO3Hxvc7IkPLgf4fd5QFllud908Z4hv3EqfmZVJtk3Tihe8T123vcPWyfzzpx3auJa1J5gmhkDHC2mYhz/0gRjyIk6fbahOus5sRAqoVU1TUs2zUtH/0OKd2l7V+tTkgl2o0s9pmUtkQI8+9aqrNFf0IqAJ/GKmZj6wHX1t19h+XzmtRWUyH14dbyQPD2YeLG7+7b3rZsG8Q2S2pGaJzrHy9nwMYAs72Q7jKTqnouxnpNalP/OD4ON+0WaFevIaTqtX+1y2+ciBBp/csWUnkS7ZZ2t32RIdUyfuOEDGJCSvtGi5PLhUdLgAj3nJQ5e6r8M4drgdqgdHJJxvpNAofBdPR6bakoSnLjWpo24FkeGvVdHurtN07Uan83F82kNmXqJwtpHCFJ4v2df+bJx8k7N/2CiyHlgSElg+S6hTKEfWxKb0OqBX3sVwwpDwwpGSTXLZQh7GNTJIUCIKs+fexXDCkPDCkZJNctlCHsY1MkhQIgqz597FcMKQ8MKRkk1y2UIexjUySFAiCrPn3sVwwpDwwpGSTXLZQh7GNTJIUCIKs+fexXDCkPDCkZJNctlCHsY1MkhQIgqz597FcMKQ9ZlqEsy1bKWq1WyLJMRNnStNkWXZDe/tJJCgVAVn36duyEOBYGFVJKKTw9PWG1WjVazmq1wo8fP6DU/jHCLsuWpq226EIf2l86pZSYgbgsS1GfZZ+OnVDHwqBCar1eoygKZFmG+Xze2JZlGZRSWK/XIsqWpq226GLrQ/tL9/z8DKUUlstl55tSCr9//+66SXb6dOyEOhYGFVJERNQvDCkiIhKLIUVERGIxpIiISCyGFBERicWQIiIisRhSREQkFkOKiIjEYkgREZFYDCkiIhKLIUVERGIxpIiISCyGFBERicWQIiIisf4HhceVOSUxCBIAAAAASUVORK5CYII=" alt="" />
图2
aaarticlea/png;base64,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" alt="" />
JavaWeb+MySql分页封装的更多相关文章
- FluentData Mysql分页的一个BUG
开发环境 FluentData3.0.VS.NET2010.Mysql5.0 问题描述 使用FluentData对一个表(记录数28)进行分页时,突然发现一个诡异的问题,第一页返回10条数据正常,第二 ...
- 8种MySQL分页方法总结
这篇文章主要介绍了8种MySQL分页方法总结,小编现在才知道,MySQL分页竟然有8种实现方法,本文就一一讲解了这些方法,需要的朋友可以参考下 MySQL的分页似乎一直是个问题,有什么优化方法吗?网上 ...
- Oracle、SQL Server、MySQL分页方法
测试用例:查询TEST_TABLE表中TEST_COLUMN列的第10-20条数据 1,Oracle分页方法 SELECT A.* FROM ( SELECT ROWNUM ROWNO, B.* FR ...
- MySql 分页
MySql 分页 由于最近项目需要,于是就简单写了个分页查询.总体而言MySql 分页机制较为简单.数据库方面只需要使用limit即可实现分页.前后台交互就直接用session传了值. 下面就写写具体 ...
- Mysql 分页语句Limit用法
转载自:http://qimo601.iteye.com/blog/1634748 1.Mysql的limit用法 在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?不用 ...
- php+mysql分页类的入门实例
php+mysql分页类的简单代码 时间:2016-02-25 06:16:26来源:网络 导读:php+mysql分页类的简单代码,二个php分页类代码,对商品进行分页展示,当前页面数,每个页面展示 ...
- sqlserver分页;mysql分页;orcale分页 的sql 查询语句
一,sqlserver分页: )) ID FROM 表名 AS 表名1_1 ORDER BY ID)) ORDER BY ID; 二:mysql分页 )*每页显示的数据条数,当前页码 * 每页显示的数 ...
- MySQL分页实现
mysql> select pname from product; +--------+ | pname | +--------+ | 产品1 | | 产品2 | | 产品三 | +--- ...
- MySQL分页优化中的“INNER JOIN方式优化分页算法”到底在什么情况下会生效?
本文出处:http://www.cnblogs.com/wy123/p/7003157.html 最近无意间看到一个MySQL分页优化的测试案例,并没有非常具体地说明测试场景的情况下,给出了一种经典的 ...
随机推荐
- [BZOJ 1698] 荷叶池塘
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1698 [算法] 最短路 [代码] #include<bits/stdc++.h ...
- RDA EQ&频响曲线
相关数据: FAC->Audio->EQ Setting EQ Band - Gain Frequency Q Factor 1.5 FAC->Audio->PEQ // En ...
- 60.extjs-布局 (在column布局中使用fieldset 和 在fieldset中使用column布局)
转自:https://blog.csdn.net/snn1410/article/details/8817821/ 在标准的html中,需要把输入项都放到fieldset中,一次来显示分组结构.虽然E ...
- 在Struts2中ognl.MethodFailedExceptiond异常的解决办法
问题描述: 在 Struts2 里面,当页面向服务器提交参数时报ognl.MethodFailedException:和java.lang.NoSuchMethodException:异常 异常信息 ...
- C# Pen绘制虚线(System.Drawing.Pen与System.Windows.Media.Pen)
一.绘制虚线的方法 GDI绘制,使用的是System.Drawing.Pen Pen pen = new Pen(Color.Red, 1); pen.DashStyle = S ...
- 【BZOJ4241】历史研究(回滚莫队)
题目: BZOJ4241 分析: 本校某些julao乱膜的时候发明了个"回滚邹队",大概意思就是某个姓邹的太菜了进不了省队回滚去文化课 回滚莫队裸题qwq(话说这个名字是不是莫队本 ...
- 启用禁用USB接口
一个小工具,功能有启用禁用外网.USB接口,可由服务端socket长链接进行操控客户端从而达到实现前边的这些功能,这里贴上核心代码,先给上启用禁用USB接口吧,这个方法可随时启用禁用,之前用过一个改u ...
- Excel文件导入导出
/** * 导入Excel文件数据 * * @param file 将要导入的Excel文件 * @param fileCheckKeyWord 用于判断导入文件是否 ...
- [hihocoder][Offer收割]编程练习赛58
最大的K-偏差排列 每次取可选范围里的最大的数字,如果最左侧的数字还没有使用就直接使用最左侧的数字 #pragma comment(linker, "/STACK:102400000,102 ...
- pd_ds 之 hash
http://attack.cf/?post=23 打个广告....