Java分页查询中分页的分页
接上次分页,这次主要对总页数进行分页,使它每次显示10个。
在PageServlet2中加
// //起始页+结束页///
// showStart ,showEnd
int showStart = 0;// 从第几个开始显示
int showEnd = 0;// 到哪结束
int showSize = 10; // 一共显示10个
int pageCount = Integer.parseInt("" + res.get("pageCount"));
if (pageCount <= showSize) {
showStart = 1;
showEnd = pageCount;
} else {
// 计算开始
if (pageNo <= (showSize / 2 + 1)) {
showStart = 1;
showEnd = showSize;
} else {
showStart = pageNo - (showSize / 2);
}
// 计算结束
showEnd = showStart + showSize - 1;
if (showEnd > pageCount) {
showEnd = pageCount;
showStart = showEnd - (showSize - 1);
}
}
request.setAttribute("showStart", showStart);
request.setAttribute("showEnd", showEnd);
如果要加入查询
要注意:每次查询的结果要存储到一个新的值对象,用来封装查询数据,
这是实现类
public class PageDaoJdbc2 implements PageDAO2 {
@Override
public Map<String, Object> query(Integer pageNo, Stud stud)
throws Exception {
Map<String, Object> result = new HashMap<String, Object>();
// 每一页显示10个数据
int pageSize = 10;
// 查询表数据
int stratN = (pageNo - 1) * pageSize;
// 计算总页数 总页数= 行数 / pageSize +(行数%pageSize==0 ? 0:1)
// 总行数
String sql = "SELECT COUNT(1) FROM stud where 1=1 ";
String sql2 = "select * from stud where 1=1 ";
if (stud.getId() != null && stud.getId().trim().length() > 0) {
sql = sql + " and id like '%" + stud.getId().trim() + "%'";
sql2 = sql2 + " and id like '%" + stud.getId().trim() + "%'";
}
if (stud.getName() != null && stud.getName().trim().length() > 0) {
sql = sql + " and id like '%" + stud.getName().trim() + "%'";
sql2 = sql2 + " and id like '%" + stud.getName().trim() + "%'";
}
QueryRunner run = new QueryRunner(C3p0Pool.getDataSource());
int rows = Integer.parseInt("" + run.query(sql, new ScalarHandler()));
int pageCount = rows / pageSize + (rows % pageSize == 0 ? 0 : 1);
result.put("pageCount", pageCount);// 封装总页数
// 查询表数据
sql2= sql2+ " limit " + stratN + "," + pageSize ;
List<Map<String, Object>> datas = run.query(sql, new MapListHandler());
result.put("datas", datas);
return result;
}
}
show2.jsp中
<c:set value="${res.pageCount}" var="pageCount"></c:set>
<c:if test="${res.currentPage != 1}">
<a href="<c:url value='/PageServlet2?page=${res.currentPage-1}'/>">上一页</a>
</c:if>
<c:forEach begin="${showStart }" end="${showEnd}" var="idx">
<c:if test="${res.currentPage == idx}">
${idx}
</c:if>
<c:if test="${res.currentPage != idx}">
<a href="<c:url value='/PageServlet2?page=${idx}'/>">${idx}</a>
</c:if>
</c:forEach>
<c:if test="${res.currentPage != pageCount}">
<a href="<c:url value='/PageServlet2?page=${res.currentPage+1}'/>">下一页</a>
</c:if>