手把手教你JavaEE的分頁查詢、分頁展示,有了這個,你的項目又多了一個談資

前言:
我們在寫項目的時候,往往有一些項目的信息展示。而展示的數據量往往是很大的,這時候,加入一個分頁的功能往往是最理想的選擇。

先簡單描述一下功能:

根據你的數據量和指定的頁面展示數據條數,進行查詢不同的數據,通過“首頁”、“上頁”、“下頁”、“尾頁”按鈕進行跳轉。

首先展示一下效果,如下圖:
在這裏插入圖片描述
如何用純代碼實現上面的功能呢?

一共主要有以下幾步:
1、創建分頁對象
2、在後臺查詢時使用數據庫行號
3、在前端展示時,將分頁對象中處理好的分頁屬性鏈接加入到按鈕中

······································································································································

  • 首先呢,就是創建一個分頁對象:
public class PageModel {
	private long total_count;//數據總條數
	private int page_size=10;//每頁顯示條數
	private int page_num;//總頁數
	private int page_now=1;//當前頁數
	
	private String page_first;//頁面展示首頁信息
	private String page_pre;//頁面展示上一頁信息
	private String page_next;//頁面展示下一頁信息
	private String page_last;//頁面展示尾頁信息
	
	private int first=1;//首頁頁數
	private int pre=0;//上一頁頁數
	private int next=0;//下一頁頁數
	private int last;//尾頁頁數

	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) {
		// 獲取當前頁數
		String page_now = request.getParameter("page_now");

		if (page_now == null) {
			page_now = "1";
		}
		// 字符串轉換成數字
		int pagenow = Integer.parseInt(page_now);

		// 獲取數據總條數
		// 注意:mapper層需要定義getCount方法
		int count = mapper.getCount();

		// 創建分頁類對象
		PageModel page = new PageModel();
		// 設置分頁信息----要修改的信息
		// 注意:設定setPage參數
		page.setPage("goods_genre/select", count, pagenow, 6,"");
		// 調取當前分頁的開始條數
		int start = (page.getPage_now() - 1) * page.getPage_size();
		// 每頁查詢數據條數
		int end = page.getPage_size() * page.getPage_now();
		// 將開始條數和每頁展示條數存放於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);

	}

這裏呢,我們點擊按鈕後,我們拿到當前的頁數以後,根據數據總條數和規定的一頁顯示數據量來生成我們的查詢條件,查詢之後將我們的分頁對象和查詢到的信息傳送到頁面即可。

  • 這裏呢就涉及到頁面展示以及我們的數據庫查詢兩端的操作了,如下:
<select id="select" parameterType="Map" resultType="Goods_genreEntity">
		select * from 
			(select ROWNUM num,m.* from goods_genre m) t
			where num>#{start} and num &lt;= #{end}
	</select>

oracle數據庫自帶行號屬性,所以這裏我可以直接使用ROWNUM關鍵字進行查詢,使用行號分割數據。

  • 頁面端展示:
<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>

臨近畢業,感慨萬分。最後,感謝我的老師-劉爸!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章