亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

分頁(yè)實(shí)現(xiàn)的基本過(guò)程:

一、分頁(yè)工具類

思路:

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

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

代碼如下:

package cn.myic.model;

import java.util.List;

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

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

  // 每頁(yè)多少條記錄
  private int pageSize;

  // 第幾頁(yè)
  private int pageNo;
  
  /**
   * @return 總頁(yè)數(shù)
   * */
  public int getTotalPages(){
    return (totalRecords+pageSize-1)/pageSize;
  }
  
  /**
   * 計(jì)算當(dāng)前頁(yè)開始記錄
   * @param pageSize 每頁(yè)記錄數(shù)
   * @param currentPage 當(dāng)前第幾頁(yè)
   * @return 當(dāng)前頁(yè)開始記錄號(hào)
   */
  public int countOffset(int currentPage,int pageSize){
    int offset = pageSize*(currentPage-1);
    return offset;
  }
  
  /**
   * @return 首頁(yè)
   * */
  public int getTopPageNo(){
    return 1;
  }
  
  /**
   * @return 上一頁(yè)
   * */
  public int getPreviousPageNo(){
    if(pageNo<=1){
      return 1;
    }
    return pageNo-1;
  }
  
  /**
   * @return 下一頁(yè)
   * */
  public int getNextPageNo(){
    if(pageNo>=getBottomPageNo()){
      return getBottomPageNo();
    }
    return pageNo+1;
  }
  
  /**
   * @return 尾頁(yè)
   * */
  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層方法

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

代碼如下:

/**
   * 分頁(yè)查詢
   * @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.定義一個(gè)分頁(yè)查詢的方法,設(shè)置參數(shù):當(dāng)頁(yè)頁(yè)號(hào)和每頁(yè)顯示多少條記錄,返回查詢結(jié)果的分頁(yè)類對(duì)象(Page)

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

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

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

 5.Set入page對(duì)象

代碼如下:

/**
   * 分頁(yè)查詢 
   * @param currentPage 當(dāng)前頁(yè)號(hào):現(xiàn)在顯示的頁(yè)數(shù)
   * @param pageSize 每頁(yè)顯示的記錄條數(shù)
   * @return 封閉了分頁(yè)信息(包括記錄集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)前頁(yè)開始記錄
    int offset = page.countOffset(currentPage,pageSize); 
    //分頁(yè)查詢結(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è)計(jì),操作翻頁(yè)查詢時(shí),只需要傳遞當(dāng)前頁(yè)號(hào)參數(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頁(yè)面分頁(yè)的幾個(gè)按鈕,根據(jù)當(dāng)前頁(yè)號(hào)的判斷顯示。

代碼如下:

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

頁(yè)面效果:

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

相關(guān)文章

  • JAVA設(shè)計(jì)模式之責(zé)任鏈模式詳解

    JAVA設(shè)計(jì)模式之責(zé)任鏈模式詳解

    這篇文章主要介紹了JAVA設(shè)計(jì)模式之責(zé)任鏈模式詳解,需要的朋友可以參考下
    2015-04-04
  • java算法之余弦相似度計(jì)算字符串相似率

    java算法之余弦相似度計(jì)算字符串相似率

    這篇文章主要介紹了java算法之余弦相似度計(jì)算字符串相似率,對(duì)算法感興趣的同學(xué),可以參考下
    2021-05-05
  • Java如何實(shí)現(xiàn)海量數(shù)據(jù)判重

    Java如何實(shí)現(xiàn)海量數(shù)據(jù)判重

    在海量數(shù)據(jù)如何確定一個(gè)值是否存在?這是一道非常經(jīng)典的面試場(chǎng)景題,那怎么回答這個(gè)問(wèn)題呢?下面小編就來(lái)和大家詳細(xì)的聊一聊,感興趣的可以一起學(xué)習(xí)一下
    2023-09-09
  • SpringBoot+Logback實(shí)現(xiàn)一個(gè)簡(jiǎn)單的鏈路追蹤功能

    SpringBoot+Logback實(shí)現(xiàn)一個(gè)簡(jiǎn)單的鏈路追蹤功能

    Spring Boot默認(rèn)使用LogBack日志系統(tǒng),并且已經(jīng)引入了相關(guān)的jar包,所以我們無(wú)需任何配置便可以使用LogBack打印日志。這篇文章主要介紹了SpringBoot+Logback實(shí)現(xiàn)一個(gè)簡(jiǎn)單的鏈路追蹤功能,需要的朋友可以參考下
    2019-10-10
  • Java org.w3c.dom.Document 類方法引用報(bào)錯(cuò)

    Java org.w3c.dom.Document 類方法引用報(bào)錯(cuò)

    這篇文章主要介紹了Java org.w3c.dom.Document 類方法引用報(bào)錯(cuò)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • 通過(guò)實(shí)例解析傳統(tǒng)jar包引用方式

    通過(guò)實(shí)例解析傳統(tǒng)jar包引用方式

    這篇文章主要介紹了通過(guò)實(shí)例解析傳統(tǒng)jar包引用方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • springboot結(jié)合redis實(shí)現(xiàn)搜索欄熱搜功能及文字過(guò)濾

    springboot結(jié)合redis實(shí)現(xiàn)搜索欄熱搜功能及文字過(guò)濾

    本文主要介紹了springboot結(jié)合redis實(shí)現(xiàn)搜索欄熱搜功能及文字過(guò)濾,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • 基于Java 談回調(diào)函數(shù)

    基于Java 談回調(diào)函數(shù)

    回調(diào)函數(shù)就是一個(gè)通過(guò)函數(shù)指針調(diào)用的函數(shù)。如果你把函數(shù)的指針(地址)作為參數(shù)傳遞給另一個(gè)函數(shù),當(dāng)這個(gè)指針被用來(lái)調(diào)用其所 指向的函數(shù)時(shí),我們就說(shuō)這是回調(diào)函數(shù)
    2017-05-05
  • 詳解Java中的防抖和節(jié)流

    詳解Java中的防抖和節(jié)流

    防抖是將多次執(zhí)行變?yōu)橹付〞r(shí)間內(nèi)不在觸發(fā)之后,執(zhí)行一次。節(jié)流是將多次執(zhí)行變?yōu)橹付〞r(shí)間不論觸發(fā)多少次,時(shí)間一到就執(zhí)行一次。這篇文章來(lái)和大家聊聊Java中的防抖和節(jié)流,感興趣的可以了解一下
    2022-08-08
  • 如何使用HttpClient發(fā)送java對(duì)象到服務(wù)器

    如何使用HttpClient發(fā)送java對(duì)象到服務(wù)器

    這篇文章主要介紹了如何使用HttpClient發(fā)送java對(duì)象到服務(wù)器,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11

最新評(píng)論