1。 在说之前,我把这简单一词,归类为无脑,也就是不考虑程序运行效率和与数据库交互的数据达到最优。
2. 说到分页肯定就想到hql,sql中的limit<pageNo,pageSize>,no no no 我就随便讲讲用其他的方法来实现分页,不用limit
不多说,看代码:
//获取全记录列表。看到这就知道毫无效率可言,如果取得列表长期不变的话,还可以考虑存入缓存...哈哈
List<DynamicMsg> all_list = DynamicMsgService.getInstance().getTeamMsg(cid);
//工具类分页---原理就是利用List自带一个subList方法,是不是很无语呢? List<DynamicMsg> ldm = PageHelper.trunListByStart(all_list==null?new ArrayList<DynamicMsg>():all_list , curpage-1 , pageSize);
//这一点不用多说都明白吧,拿size整除pageSize然后验证是否有余数 int totalpage = PageHelper.totalPage(all_list==null? 0 :all_list.size() , pageSize);
PageHelper工具类
public class PageHelper {
// 拿到第几页多少条数据 public static List trunList(List list,int page,int pnum){ int start = (page-1)*pnum; int end = start+pnum; if(list.size()>end) return list.subList(start,end); else if(list.size()>start) return list.subList(start,list.size()); else return list; }
// 取出自定义条数记录的list public static List trunListByStart(List list,int start,int end){ if(list==null) return null; else if(list.size()>end) return list.subList(start,end); else if(list.size()>start) return list.subList(start,list.size()); else return list; }
//总页数public static int totalPage(int total,int pnum){ if (total < pnum) { return 1; } else { return (total/pnum + (total%pnum==0?0:1)); } }
//分页 页码 public static int[] getShowPageNum(int totalpage,int pageNo,int showNum){ int[] se=new int[2]; se[0]=0;se[1]=0; if (totalpage>0 && pageNo>0) { int tmpNum = pageNo - showNum / 2; int start = 1 + tmpNum; int end = showNum + tmpNum; if (start < 1) { end = end + (1 - start); start = 1; if (end > totalpage) { end = totalpage; } } if (end > totalpage) { start = start - (end - totalpage); end = totalpage; if (start < 1) { start = 1; } } se[0]=start; se[1]=end; } return se; } }
JSP页面 页码显示 精髓所在啊.... 上一页 ... 2 3 4 5 6 7 8 9 ... 下一页
<a href="javascript:go(<%=curpage-1%>)" class="a1">上一页</a> <% int se[]=PageHelper.getShowPageNum(totalpage,curpage,4); if(se[0]>1){out.print(" ...");}for(int pi=se[0];pi<=se[1];pi++){if(pi==curpage){out.print(" <a href='javascript:;' class='se'>"+pi+"</a>");}else{out.print(" <a href='javascript:go("+pi+")'>"+pi+"</a>");} } if(totalpage>se[1]){out.print(" ... ");}%> <a href="javascript:go(<%=curpage+1%>)" class="a2">下一页</a> <script type="text/javascript"> function go(page){ if(page<1){ alert("已到首页");return; } if(page><%=totalpage%>){ alert("已到尾页");return; } if(<%=curpage%>==page){ alert("当前页即是");return; } var url = "/team/team-dynamic.jsp?page="+page;location.href = url;} </script>