在分页之前,我们先弄明白一个问题,是查询出所有数据再分页,还是只查页面显示的那几条数据呢?
各有利弊!
查询出所有数据再分页,数据会放在缓存中,换页时速度快,但是数据量很大那就不合适了
只查页面显示的几条数据,适合大数据量(推荐这种查询方式)
搞清楚了这个问题,我们就可以开始分页了(我们用第二种分页方式,只查页面显示的几条数据):
我们先看一张图:
这是我们分页是经常见到的布局。
1.用到的参数:
countrow 共几条数据
countpage 共几页
nowpage 现在是第几页
firstpage 首页
uppage 上一页
nextpage 下一页
endpage 尾页
wherepage 转到第几页
2.向后台发送请求时需要传递三个参数(根据需要可添加):
fistrow 从第几条开始(fistrow=0表示从第一条)
countrow 查几条数据
nowpage 现在是第几页
说明:页面中我们使用的是iframe框架,关于iframe框架:
http://blog.csdn.net/zqd_java/article/details/53924315
3.jsp前端页面:
<a href="项目路径?nowpage=1&fistrow=0&countrow=5">查询</a>
<div class="updownye">
<span>共${countrow}条数据</span>
<span>共<%=countpage%>页,第<%=nowpage%>页</span>
<a href="项目路径?nowpage=1&fistrow=0&countrow=5">首页</a>
<a id="uppage" href="javascript:void(0);">上一页</a>
<a id="nextpage" href="javascript:void(0);">下一页</a>
<a id="endpage" href="javascript:void(0);">尾页</a>
<span>转到第<input type="text" οnkeyup="this.value=this.value.replace(/\D/g,'')" onafterpaste="this.value=this.value.replace(/\D/g,'')" id="currentPage" value="<%=currentPage%>" class="lineye"/>页</span>
<a href="javascript:void(0);" class="goto" id="wherepage">Go</a>
</div>
4.JavaScript代码:
<script type="text/javascript">
$(document).ready(function() {
// 点击前一页
$("#uppage ").click(function(e){
var nowpage= $("#nowpage").val();
if (nowpage> 1) {
var uppage= parseInt(nowpage) - 1;
createView(uppage);
}
});
// 点击下一页
$("#nextpage").click(function(e){
var nowpage= $("#nowpage").val();
var nextPage = parseInt(nowpage) + 1;
var countpage = <%=countpage %>;
if (nextPage <= countpage ) {
createView(nextPage);
}
});
// 点击末页
$("#endpage").click(function(e){
var totalPage = <%=countpage%>;
createView(totalPage);
});
// 点击go
$("#goPage").click(function(e){
var wherepage= $("#nowpage").val();
var totalPage = <%=pageCount%>;
if(nowpage> totalPage || currentPage <= 0){
return;
}
createView(wherepage);
});
function createView(wherepage){
var index = (wherepage-1)*5;
location.href="<%=basePath%>项目路径?wherepage="+wherepage+"&fistrow="+index+"&countrow=5";
}
</script>
5.后台代码:
分页:
public void getAllDwList(HttpServletRequest request, String currentPage,
int firstResult, int maxResults) {
// TODO Auto-generated method stub
// List<TbDw> list = tbDwDAO.findAll(tjList);
Long list = tbDwDAO.findsize(tjList);
int size = list.intValue();
int pageCount = 0;
if (size%maxResults == 0) {
pageCount = size/maxResults;
} else {
pageCount = size/maxResults + 1;
}
if(size == 0) {
request.setAttribute("currentPage", "0");
} else {
request.setAttribute("currentPage", currentPage);
}
request.setAttribute("pageCount", pageCount);
request.setAttribute("totalCount", size);
request.setAttribute("dw_list", tbDwDAO.findAll2(firstResult,maxResults));
}
}
查数据:
@Override
public List findAll2(int firstResult, int maxResults) {
// TODO Auto-generated method stub
try {
String queryString = "from TbDw as model where 1=1 ";
String queryOrderby = "order by model.dwbh ";
String queryAnd = "";
queryString = queryString + queryAnd + queryOrderby;
Query query = sessionFactory.getCurrentSession().createQuery(
queryString);
query.setFirstResult(firstResult);
query.setMaxResults(maxResults);
return query.list();
} catch (RuntimeException re) {
throw re;
}
}
因为项目太大,不能详细说明,如有疑问,请留言或关注发私信,一定给解答!