1。 在說以前,我把這簡單一詞,歸類爲無腦,也就是不考慮程序運行效率和與數據庫交互的數據達到最優。javascript
2. 說到分頁確定就想到hql,sql中的limit<pageNo,pageSize>,no no no 我就隨便講講用其餘的方法來實現分頁,不用limitjava
很少說,看代碼:sql
//獲取全記錄列表。看到這就知道毫無效率可言,若是取得列表長期不變的話,還能夠考慮存入緩存...哈哈
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>