一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - 基于hibernate實現的分頁技術實例分析

基于hibernate實現的分頁技術實例分析

2020-04-12 16:50beyond667 JAVA教程

這篇文章主要介紹了基于hibernate實現的分頁技術,結合實例形式分析了Hibernate分頁技術的原理,實現步驟與相關實現技巧,需要的朋友可以參考下

本文實例講述了基于hibernate實現的分頁技術。分享給大家供大家參考,具體如下:

先說明一下基于hibernate實現分頁的原理,假如從數據庫取出100條數據,我們要讓每頁顯示10條,假如從30開始,只需要設置起始位置和最大的返回結果即可
先上代碼:注意傳進來的參數有 Page這類,后面有介紹

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public List<Article> queryByPage(final String username, final Page page) {
    return this.getHibernateTemplate().executeFind(new HibernateCallback() {
      public Object doInHibernate(Session session)
          throws HibernateException, SQLException {
        Query query = session.createQuery("select art from Article art where art.username = ?");
        //設置參數
        query.setParameter(0, username);
        //設置每頁顯示多少個,設置多大結果。
        query.setMaxResults(page.getEveryPage());
        //設置起點
        query.setFirstResult(page.getBeginIndex());
        return query.list();
      }
});

上面關鍵代碼是 setMaxResults(),和setFirstResult(),即設置最大顯示值和起點

這里我們需要一個Page工具類,用來操作分頁。

Page.java:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
package com.fenye;
public class Page {
  // 1.每頁顯示數量(everyPage)
  private int everyPage;
  // 2.總記錄數(totalCount)
  private int totalCount;
  // 3.總頁數(totalPage)
  private int totalPage;
  // 4.當前頁(currentPage)
  private int currentPage;
  // 5.起始點(beginIndex)
  private int beginIndex;
  // 6.是否有上一頁(hasPrePage)
  private boolean hasPrePage;
  // 7.是否有下一頁(hasNextPage)
  private boolean hasNextPage;
  public Page(int everyPage, int totalCount, int totalPage, int currentPage,
      int beginIndex, boolean hasPrePage, boolean hasNextPage) {
    this.everyPage = everyPage;
    this.totalCount = totalCount;
    this.totalPage = totalPage;
    this.currentPage = currentPage;
    this.beginIndex = beginIndex;
    this.hasPrePage = hasPrePage;
    this.hasNextPage = hasNextPage;
  }
  //構造函數,默認
  public Page(){}
  //構造方法,對所有屬性進行設置
  public int getEveryPage() {
    return everyPage;
  }
  public void setEveryPage(int everyPage) {
    this.everyPage = everyPage;
  }
  public int getTotalCount() {
    return totalCount;
  }
  public void setTotalCount(int totalCount) {
    this.totalCount = totalCount;
  }
  public int getTotalPage() {
    return totalPage;
  }
  public void setTotalPage(int totalPage) {
    this.totalPage = totalPage;
  }
  public int getCurrentPage() {
    return currentPage;
  }
  public void setCurrentPage(int currentPage) {
    this.currentPage = currentPage;
  }
  public int getBeginIndex() {
    return beginIndex;
  }
  public void setBeginIndex(int beginIndex) {
    this.beginIndex = beginIndex;
  }
  public boolean isHasPrePage() {
    return hasPrePage;
  }
  public void setHasPrePage(boolean hasPrePage) {
    this.hasPrePage = hasPrePage;
  }
  public boolean isHasNextPage() {
    return hasNextPage;
  }
  public void setHasNextPage(boolean hasNextPage) {
    this.hasNextPage = hasNextPage;
  }
}

Page工具類主要是封裝頁面信息,一共多少數據啊,一頁顯示多少啊,起點的序號,總頁數,是否有上一頁下一頁,當前頁。

還需要一個操作page的工具類,PageUtil.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
package com.sanqing.fenye;
/*
 * 分頁信息輔助類
 */
public class PageUtil {
  public static Page createPage(int everyPage,int totalCount,int currentPage) {
    everyPage = getEveryPage(everyPage);
    currentPage = getCurrentPage(currentPage);
    int totalPage = getTotalPage(everyPage, totalCount);
    int beginIndex = getBeginIndex(everyPage, currentPage);
    boolean hasPrePage = getHasPrePage(currentPage);
    boolean hasNextPage = getHasNextPage(totalPage, currentPage);
    return new Page(everyPage, totalCount, totalPage, currentPage,
        beginIndex, hasPrePage, hasNextPage);
  }
  public static Page createPage(Page page,int totalCount) {
    int everyPage = getEveryPage(page.getEveryPage());
    int currentPage = getCurrentPage(page.getCurrentPage());
    int totalPage = getTotalPage(everyPage, totalCount);
    int beginIndex = getBeginIndex(everyPage, currentPage);
    boolean hasPrePage = getHasPrePage(currentPage);
    boolean hasNextPage = getHasNextPage(totalPage, currentPage);
    return new Page(everyPage, totalCount, totalPage, currentPage,
        beginIndex, hasPrePage, hasNextPage);
  }
  //設置每頁顯示記錄數
  public static int getEveryPage(int everyPage) {
    return everyPage == 0 ? 10 : everyPage;
  }
  //設置當前頁
  public static int getCurrentPage(int currentPage) {
    return currentPage == 0 ? 1 : currentPage;
  }
  //設置總頁數,需要總記錄數,每頁顯示多少
  public static int getTotalPage(int everyPage,int totalCount) {
    int totalPage = 0;
    if(totalCount % everyPage == 0) {
      totalPage = totalCount / everyPage;
    } else {
      totalPage = totalCount / everyPage + 1;
    }
    return totalPage;
  }
  //設置起始點,需要每頁顯示多少,當前頁
  public static int getBeginIndex(int everyPage,int currentPage) {
    return (currentPage - 1) * everyPage;
  }
  //設置是否有上一頁,需要當前頁
  public static boolean getHasPrePage(int currentPage) {
    return currentPage == 1 ? false : true;
  }
  //設置是否有下一個,需要總頁數和當前頁
  public static boolean getHasNextPage(int totalPage, int currentPage) {
    return currentPage == totalPage || totalPage == 0 ? false : true;
  }
}

創建Page只需要3個參數,每頁顯示多少數據,當前頁,總共多少數據,其他的4個參數都可以通過這三個計算出來

所以后面要創建Page,只需要調用這工具方法PageUtil.createPage(3個參數),就返回一Page.

返回的Page就是前面參數的Page,即要顯示的分頁

這樣就算完成了分頁的功能。

希望本文所述對大家基于Hibernate框架的Java程序設計有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日本动漫xxxxxx| 1024国产精品视频观看 | 国产欧美日韩图片一区二区 | 日本一区二区三区四区无限 | 痴mu动漫成年动漫在线观看 | 婷婷中文| 精品亚洲一区二区三区在线播放 | 久久精品视在线观看85 | 日本一区二区高清免费不卡 | 精品99在线观看 | 黄动漫软件车车好快的车车 | 日韩欧美不卡视频 | 91精品国产一区 | 精品无码人妻一区二区免费AV | 国产91免费| 国产午夜精品久久理论片小说 | 日本暖暖在线视频 | 亚洲第一免费播放区 | 亚洲国产成人99精品激情在线 | 欧美交换乱理伦片120秒 | yy8090韩国日本三理论免费 | 成人精品免费网站 | 精品香蕉99久久久久网站 | 国语刺激对白勾搭视频在线观看 | 亚洲成人黄色网址 | 亚洲国产成人久久午夜 | a一级一级| 国产精品自在线 | 亚洲丁香网 | 亚洲一欧洲中文字幕在线 | 俄罗斯bbbbbbxxxxxx | 91大神亚洲影视在线 | 狠狠色成人综合网图片区 | 日韩欧美国产综合精品 | 成人福利 | 日韩欧美一区二区三区免费观看 | 国产综合成色在线视频 | 国产做a爰片久久毛片 | 四虎永久在线精品国产 | 506rr亚洲欧美 | 欧美亚洲激情在线 |