最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

springmvc4+hibernate4分頁查詢功能實現(xiàn)

 更新時間:2017年01月07日 17:35:21   作者:虞秀權(quán)  
本篇文章主要介紹了springmvc4+hibernate4分頁查詢功能實現(xiàn),Springmvc+hibernate成為現(xiàn)在很多人用的框架整合,有興趣的可以了解一下。

Springmvc+hibernate成為現(xiàn)在很多人用的框架整合,最近自己也在學(xué)習(xí)摸索,由于我們在開發(fā)項目中很多項目都用到列表分頁功能,在此參考網(wǎng)上一些資料,以springmvc4+hibnerate4邊學(xué)邊總結(jié),得出分頁功能代碼,雖然不一定通用,對于初學(xué)者來說有參考價值。

分頁實現(xiàn)的基本過程:

一、分頁工具類

思路:

 1.編寫Page類,定義屬性,應(yīng)該包括:查詢結(jié)果集合、查詢記錄總數(shù)、每頁顯示記錄數(shù)、當(dāng)前第幾頁等屬性。

 2.編寫Page類,定義方法,應(yīng)該包括:總頁數(shù)、當(dāng)前頁開始記錄、首頁、下一頁、上一頁、末頁等方法

代碼如下:

package cn.myic.model;

import java.util.List;

public class Page<E> {
  // 結(jié)果集
  private List<E> list;

  // 查詢記錄總數(shù)
  private int totalRecords;

  // 每頁多少條記錄
  private int pageSize;

  // 第幾頁
  private int pageNo;
  
  /**
   * @return 總頁數(shù)
   * */
  public int getTotalPages(){
    return (totalRecords+pageSize-1)/pageSize;
  }
  
  /**
   * 計算當(dāng)前頁開始記錄
   * @param pageSize 每頁記錄數(shù)
   * @param currentPage 當(dāng)前第幾頁
   * @return 當(dāng)前頁開始記錄號
   */
  public int countOffset(int currentPage,int pageSize){
    int offset = pageSize*(currentPage-1);
    return offset;
  }
  
  /**
   * @return 首頁
   * */
  public int getTopPageNo(){
    return 1;
  }
  
  /**
   * @return 上一頁
   * */
  public int getPreviousPageNo(){
    if(pageNo<=1){
      return 1;
    }
    return pageNo-1;
  }
  
  /**
   * @return 下一頁
   * */
  public int getNextPageNo(){
    if(pageNo>=getBottomPageNo()){
      return getBottomPageNo();
    }
    return pageNo+1;
  }
  
  /**
   * @return 尾頁
   * */
  public int getBottomPageNo(){
    return getTotalPages();
  }
  
  
  public List<E> getList() {
    return list;
  }

  public void setList(List<E> list) {
    this.list = list;
  }

  public int getTotalRecords() {
    return totalRecords;
  }

  public void setTotalRecords(int totalRecords) {
    this.totalRecords = totalRecords;
  }

  public int getPageSize() {
    return pageSize;
  }

  public void setPageSize(int pageSize) {
    this.pageSize = pageSize;
  }

  public int getPageNo() {
    return pageNo;
  }

  public void setPageNo(int pageNo) {
    this.pageNo = pageNo;
  }

}

二、Dao層方法

思路:定義一個分頁查詢的方法,設(shè)置參數(shù):當(dāng)頁頁號和每頁顯示多少條記錄

代碼如下:

/**
   * 分頁查詢
   * @param hql 查詢的條件
   * @param offset 開始記錄
   * @param length 一次查詢幾條記錄
   * @return 返回查詢記錄集合
   */
  @SuppressWarnings("unchecked")
  @Override
  public List<Course> queryForPage(int offset, int length) {
    // TODO Auto-generated method stub
    List<Course> entitylist=null;
    try{
      Query query = getSession().createQuery("from Course");
      query.setFirstResult(offset);
      query.setMaxResults(length);
      entitylist = query.list();
      
    }catch(RuntimeException re){
      throw re;
    }
    
    return entitylist;
  }

 三、Service層方法

思路:

 1.定義一個分頁查詢的方法,設(shè)置參數(shù):當(dāng)頁頁號和每頁顯示多少條記錄,返回查詢結(jié)果的分頁類對象(Page)

 2.通過Dao層,獲取查詢實體的總記錄數(shù)

 3.獲取當(dāng)前頁開始記錄數(shù)

 4.通過Dao層,獲取分頁查詢結(jié)果集

 5.Set入page對象

代碼如下:

/**
   * 分頁查詢 
   * @param currentPage 當(dāng)前頁號:現(xiàn)在顯示的頁數(shù)
   * @param pageSize 每頁顯示的記錄條數(shù)
   * @return 封閉了分頁信息(包括記錄集list)的Bean
   * */
  @SuppressWarnings("unchecked")
  @Override
  public Page queryForPage(int currentPage,int pageSize) {
    // TODO Auto-generated method stub

    Page page = new Page();    
    //總記錄數(shù)
    int allRow = courseDao.getAllRowCount();
    //當(dāng)前頁開始記錄
    int offset = page.countOffset(currentPage,pageSize); 
    //分頁查詢結(jié)果集
    List<Course> list = courseDao.queryForPage(offset, pageSize); 

    page.setPageNo(currentPage);
    page.setPageSize(pageSize);
    page.setTotalRecords(allRow);
    page.setList(list);
    
    return page;
  }

 四、Controller層方法

Controller層的設(shè)計,操作翻頁查詢時,只需要傳遞當(dāng)前頁號參數(shù)即可。

代碼如下:

@RequestMapping(value = "/showAll.do")
  public String findAllCourse(HttpServletRequest request,
      HttpServletResponse response) {
    try {
      String pageNo = request.getParameter("pageNo");
      if (pageNo == null) {
        pageNo = "1";
      }
      Page page = courseService.queryForPage(Integer.valueOf(pageNo), 10);
      request.setAttribute("page", page);
      List<Course> course = page.getList();
      request.setAttribute("courses", course);
    } catch (Exception e) {
      e.printStackTrace();
    }
    return "course/course_list";
  }

 五、View層jsp展示

jsp頁面分頁的幾個按鈕,根據(jù)當(dāng)前頁號的判斷顯示。

代碼如下:

<tr>
      <td colspan="6" align="center" bgcolor="#5BA8DE">共${page.totalRecords}條記錄 共${page.totalPages}頁 當(dāng)前第${page.pageNo}頁<br>
        
        <a href="${path}/course/showAll.do?pageNo=${page.topPageNo }"><input type="button" name="fristPage" value="首頁" /></a>
        <c:choose>
         <c:when test="${page.pageNo!=1}">
          
           <a href="${path}/course/showAll.do?pageNo=${page.previousPageNo }"><input type="button" name="previousPage" value="上一頁" /></a>
          
         </c:when>
         <c:otherwise>
          
           <input type="button" disabled="disabled" name="previousPage" value="上一頁" />
          
         </c:otherwise>
        </c:choose>
        <c:choose>
         <c:when test="${page.pageNo != page.totalPages}">
          <a href="${path}/course/showAll.do?pageNo=${page.nextPageNo }"><input type="button" name="nextPage" value="下一頁" /></a>
         </c:when>
         <c:otherwise>
          
           <input type="button" disabled="disabled" name="nextPage" value="下一頁" />
          
         </c:otherwise>
        </c:choose>
        <a href="${path}/course/showAll.do?pageNo=${page.bottomPageNo }"><input type="button" name="lastPage" value="尾頁" /></a>
      </td>
    </tr>

頁面效果:

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java多線程CountDownLatch的實現(xiàn)

    Java多線程CountDownLatch的實現(xiàn)

    本文主要介紹了Java多線程CountDownLatch的實現(xiàn),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • java獲取linux服務(wù)器上的IP操作

    java獲取linux服務(wù)器上的IP操作

    這篇文章主要介紹了java獲取linux服務(wù)器上的IP操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • Bean的管理與SpringBoot自動裝配原理解讀

    Bean的管理與SpringBoot自動裝配原理解讀

    在SpringBoot項目中,啟動時自動創(chuàng)建IOC容器并初始化bean對象,支持通過依賴注入獲取,Bean可以通過name或類型獲取,支持單例和非單例等多種作用域,對于第三方Bean,推薦在配置類中用@Bean標識方法進行定義
    2024-11-11
  • Java實現(xiàn)學(xué)生信息管理系統(tǒng)IO版本

    Java實現(xiàn)學(xué)生信息管理系統(tǒng)IO版本

    這篇文章主要為大家詳細介紹了Java實現(xiàn)學(xué)生信息管理系統(tǒng)IO版本,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • Kafka多節(jié)點分布式集群搭建實現(xiàn)過程詳解

    Kafka多節(jié)點分布式集群搭建實現(xiàn)過程詳解

    這篇文章主要介紹了Kafka多節(jié)點分布式集群搭建實現(xiàn)過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-11-11
  • SpringBoot Import及自定義裝配實現(xiàn)方法解析

    SpringBoot Import及自定義裝配實現(xiàn)方法解析

    這篇文章主要介紹了SpringBoot Import及自定義裝配實現(xiàn)方法解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-08-08
  • 分布式系統(tǒng)下調(diào)用鏈追蹤技術(shù)面試題

    分布式系統(tǒng)下調(diào)用鏈追蹤技術(shù)面試題

    這篇文章主要為大家介紹了分布式系統(tǒng)下調(diào)用鏈追蹤技術(shù)面試問題合集,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪
    2022-03-03
  • IntelliJ?IDEA?2022.2?正式發(fā)布新功能體驗

    IntelliJ?IDEA?2022.2?正式發(fā)布新功能體驗

    IntelliJ?IDEA?2022.2為遠程開發(fā)功能帶來了多項質(zhì)量改進,使其更美觀、更穩(wěn)定,新版本還具有多項值得注意的升級和改進,下面跟隨小編一起看看IDEA?2022.2新版本吧
    2022-08-08
  • Java利用讀寫的方式實現(xiàn)音頻播放代碼實例

    Java利用讀寫的方式實現(xiàn)音頻播放代碼實例

    這篇文章主要介紹了Java利用讀寫的方式實現(xiàn)音頻播放代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11
  • 詳解Java中的HashTable

    詳解Java中的HashTable

    這篇文章主要介紹了Java中的HashTable的相關(guān)資料,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2020-12-12

最新評論

砀山县| 兖州市| 五台县| 斗六市| 英山县| 正定县| 青州市| 绥江县| 丰台区| 伊川县| 罗平县| 馆陶县| 宜兴市| 安溪县| 海阳市| 巫山县| 崇明县| 琼海市| 新和县| 客服| 乐平市| 泰安市| 平阴县| 长垣县| 洛阳市| 罗源县| 灯塔市| 汾阳市| 元朗区| 贞丰县| 南漳县| 砀山县| 鄂伦春自治旗| 霞浦县| 汾西县| 马公市| 泾阳县| 黄石市| 民县| 寿阳县| 色达县|