手把手教你JavaEE的分页查询、分页展示,有了这个,你的项目又多了一个谈资
前言:
我們在寫項(xiàng)目的時候,往往有一些項(xiàng)目的信息展示。而展示的數(shù)據(jù)量往往是很大的,這時候,加入一個分頁的功能往往是最理想的選擇。
先簡單描述一下功能:
根據(jù)你的數(shù)據(jù)量和指定的頁面展示數(shù)據(jù)條數(shù),進(jìn)行查詢不同的數(shù)據(jù),通過“首頁”、“上頁”、“下頁”、“尾頁”按鈕進(jìn)行跳轉(zhuǎn)。
首先展示一下效果,如下圖:
如何用純代碼實(shí)現(xiàn)上面的功能呢?
一共主要有以下幾步:
1、創(chuàng)建分頁對象
2、在后臺查詢時使用數(shù)據(jù)庫行號
3、在前端展示時,將分頁對象中處理好的分頁屬性鏈接加入到按鈕中
······································································································································
- 首先呢,就是創(chuàng)建一個分頁對象:
public class PageModel {private long total_count;//數(shù)據(jù)總條數(shù)private int page_size=10;//每頁顯示條數(shù)private int page_num;//總頁數(shù)private int page_now=1;//當(dāng)前頁數(shù)private String page_first;//頁面展示首頁信息private String page_pre;//頁面展示上一頁信息private String page_next;//頁面展示下一頁信息private String page_last;//頁面展示尾頁信息private int first=1;//首頁頁數(shù)private int pre=0;//上一頁頁數(shù)private int next=0;//下一頁頁數(shù)private int last;//尾頁頁數(shù)public long getTotal_count() {return total_count;}public void setTotal_count(long totalCount) {total_count = totalCount;}public int getPage_size() {return page_size;}public void setPage_size(int pageSize) {page_size = pageSize;}public int getPage_num() {return page_num;}public void setPage_num(int pageNum) {page_num = pageNum;}public int getPage_now() {return page_now;}public void setPage_now(int pageNow) {page_now = pageNow;}public String getPage_first() {return page_first;}public void setPage_first(String pageFirst) {page_first = pageFirst;}public String getPage_pre() {return page_pre;}public void setPage_pre(String pagePre) {page_pre = pagePre;}public String getPage_next() {return page_next;}public void setPage_next(String pageNext) {page_next = pageNext;}public String getPage_last() {return page_last;}public void setPage_last(String pageLast) {page_last = pageLast;}public int getFirst() {return first;}public void setFirst(int first) {this.first = first;}public int getPre() {return pre;}public void setPre(int pre) {this.pre = pre;}public int getNext() {return next;}public void setNext(int next) {this.next = next;}public int getLast() {return last;}public void setLast(int last) {this.last = last;}//action 控制器方法的請求地址public void setPage(String action,int total_count,int page_now,int page_size,String params){this.page_size=page_size;this.page_now=page_now;this.page_num=(int) (total_count/this.page_size);if(total_count%this.page_size!=0){this.page_num+=1;} last=page_num;if(page_now>1){pre=page_now-1;}else{pre=1;}if(page_now<page_num){next=page_now+1;}else{next=page_now;}page_first=action+"?page_now="+first+params;page_pre=action+"?page_now="+pre+params;page_next=action+"?page_now="+next+params;page_last=action+"?page_now="+last+params;}
}
- 緊接著就是我們的這個分頁對象的用法咯:
public void select(HttpServletRequest request) {// 獲取當(dāng)前頁數(shù)String page_now = request.getParameter("page_now");if (page_now == null) {page_now = "1";}// 字符串轉(zhuǎn)換成數(shù)字int pagenow = Integer.parseInt(page_now);// 獲取數(shù)據(jù)總條數(shù)// 注意:mapper層需要定義getCount方法int count = mapper.getCount();// 創(chuàng)建分頁類對象PageModel page = new PageModel();// 設(shè)置分頁信息----要修改的信息// 注意:設(shè)定setPage參數(shù)page.setPage("goods_genre/select", count, pagenow, 6,"");// 調(diào)取當(dāng)前分頁的開始條數(shù)int start = (page.getPage_now() - 1) * page.getPage_size();// 每頁查詢數(shù)據(jù)條數(shù)int end = page.getPage_size() * page.getPage_now();// 將開始條數(shù)和每頁展示條數(shù)存放于map對象System.out.println(start + " " + end);Map<String, Integer> map = new HashMap<String, Integer>();map.put("start", start);map.put("end", end);List<?> list = mapper.select(map);request.setAttribute("goods_genre", list);request.setAttribute("page", page);}
這里呢,我們點(diǎn)擊按鈕后,我們拿到當(dāng)前的頁數(shù)以后,根據(jù)數(shù)據(jù)總條數(shù)和規(guī)定的一頁顯示數(shù)據(jù)量來生成我們的查詢條件,查詢之后將我們的分頁對象和查詢到的信息傳送到頁面即可。
- 這里呢就涉及到頁面展示以及我們的數(shù)據(jù)庫查詢兩端的操作了,如下:
<select id="select" parameterType="Map" resultType="Goods_genreEntity">select * from (select ROWNUM num,m.* from goods_genre m) twhere num>#{start} and num <= #{end}</select>
oracle數(shù)據(jù)庫自帶行號屬性,所以這里我可以直接使用ROWNUM關(guān)鍵字進(jìn)行查詢,使用行號分割數(shù)據(jù)。
- 頁面端展示:
<div class="paging"><a href="<%=basePath %>${page.page_first }">首頁</a> <a href="<%=basePath %>${page.page_pre }">上一頁</a> <a href="<%=basePath %>${page.page_next }">下一頁</a><a href="<%=basePath %>${page.page_last }">尾頁</a>
</div>
臨近畢業(yè),感慨萬分。最后,感謝我的老師-劉爸!
總結(jié)
以上是生活随笔為你收集整理的手把手教你JavaEE的分页查询、分页展示,有了这个,你的项目又多了一个谈资的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux/docker下oracle开
- 下一篇: 一分钟带你了解什么是“复杂度” 算法