1. 程式人生 > >Hibiernate+struts2分頁(一)

Hibiernate+struts2分頁(一)

session 初始 記錄 list 修改 println 返回 code amp

如果使用Hibernate的話,她裏面的Query有這麽兩個方法,可以查詢出第x到第y條的信息,由此我們可以只要知道,只要有當前頁的頁碼(page)和總記錄條數(number),就可以實現分頁查詢。Query兩個方法如下:

Query query = session.createQuery("from Products");
query.setFirstResult();// (當前頁面-1)X每頁條數
query.setMaxResults(); // 每頁的條數

當然,我這個是用Hibernate+struts2做的,首先需要構建自己的分頁類FenYe.class

分頁類:

public class FenYe {
   private int first = 0;       // 第一條記錄
   private int max = 5;       // 每頁顯示的記錄條數
   private Integer page;     // 輸入頁數
   private int curr_page;    // 當前頁數
   private int pages;        // 總的頁數
   private Integer number; // 總的記錄數

   //     第一頁
   public void firstListener() {
          page=1;                                     //輸入頁=第一頁
          first=0;                                       //第一條記錄=0
          curr_page = page;                      //當前頁=輸入頁
   }

   // 最後一頁
   public void lastListener() {
          page = pages;                              //輸入頁=總頁數
          curr_page=page;                         //當前頁=輸入頁
          first = (pages - 1) * max;             //第一條記錄=(當前頁-1)*每頁顯示記錄的條數
   }

   //中間頁
   public void gotoListener() {
          curr_page = page;                        //當前頁=輸入頁
          first = (curr_page - 1) * max;       //第一條記錄=(當前頁-1)*每頁顯示記錄的條數
   }

    // 判斷是否是第一頁或者最後一頁
    public FenyeService fenYe(Integer page, Integer number) {
        // 設定輸入的頁數
        this.setPage(page);
        // 設定總記錄數
        this.setNumber(number);
        // 初始化總頁數
        this.setPages(number);

        if (page > 0 && page <= this.pages) { // 如果輸入頁數>0<總的頁數
            this.gotoListener();
        } else if (page <= 0 || number == 0) { // 如果輸入頁數<0或者沒有數據的時候
            this.firstListener();
        } else if (page > this.pages) { // 如果輸入頁數>總頁數
            this.lastListener();
        }

        // 返回自身
        return this;
    }

    public static void main(String[] args) {
        FenYe fenye = new FenYe();
        fenye.setNumber(11);
        fenye.setPage(3);
        fenye.fenYe();

        System.out.println("第一條記錄first:" + fenye.getFirst());
        System.out.println("每頁顯示的記錄數max:" + fenye.getMax());
        System.out.println("輸入頁數page:" + fenye.getPage());
        System.out.println("當前頁數curr_page:" + fenye.getCurr_page());
        System.out.println("總頁數pages:" + fenye.getPages());
        System.out.println("總記錄條數number:" + fenye.getNumber());
    }

    ...
    中間的get、set方法就不貼出來了
    ...
    /*
     * 
     * 對pages的set方法作出如下修改
     * 
     * 計算總頁數
     * 
     * 如果被整除:總頁數=總數據條數/每頁顯示的條數
     * 
     * 如果有余數:總頁數=總數據條數/每頁顯示的條數(取整數)+1
     */
    public void setPages(int number) {
        this.pages = number % max == 0 ? number / max : number / max + 1;
    }
}

Hibiernate+struts2分頁(一)