程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Struts2+Hibernate完成數據分頁的辦法

Struts2+Hibernate完成數據分頁的辦法

編輯:關於JAVA

Struts2+Hibernate完成數據分頁的辦法。本站提示廣大學習愛好者:(Struts2+Hibernate完成數據分頁的辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是Struts2+Hibernate完成數據分頁的辦法正文


本文實例講述了Struts2+Hibernate完成數據分頁的辦法。分享給年夜家供年夜家參考,詳細以下:

1.用Hibernate完成分頁技巧:

/**
* 應用hql語句停止分頁查詢
* @param hql 須要查詢的hql語句
* @param offset 第一筆記錄索引
* @param pageSize 每頁須要顯示的記載數
* @return 以後頁的一切記載
*/
@SuppressWarnings("unchecked")
public List findByPage(final String hql,
final int offset, final int pageSize)
{
    //經由過程一個HibernateCallback對象來履行查詢
    List list = getHibernateTemplate()
      .executeFind(new HibernateCallback()
    {
      //完成HibernateCallback接口必需完成的辦法
      public Object doInHibernate(Session session)
        throws HibernateException, SQLException
      {
        //履行Hibernate分頁查詢
        List result = session.createQuery(hql)
          .setFirstResult(offset)
          .setMaxResults(pageSize)
          .list();
        return result;
      }
    });
    return list;
}
// 獲得總記載數
public int getRows(String hql) {
    return getHibernateTemplate().find(hql).size();
}

2.在Action裡挪用Hibernate完成分頁技巧的辦法,並跳轉到顯示界面:

// 分頁
@SuppressWarnings("unchecked")
public String paging() {
    String hql = "from Income"; // 分頁的數據表
    int pageSize = 3; // 每頁顯示記載的條數
    int allRows = service.getRows(hql); // 記載總數
    int allPage = 0; // 總頁數
    int offset = getPage() + 1; // 第一筆記錄的索引
    /*if (rows % size != 0) {
      pageSize = rows / size + 1;
    } else {
      pageSize = rows / size;
    }*/
    allPage = (allRows - 1) / pageSize + 1; // 盤算總頁數
    List<Income> income = service.findByPage(hql, (offset-1)*pageSize, pageSize);
    request.setAttribute("allPage", allPage);
    request.setAttribute("offset", offset);
    request.setAttribute("income", income);
    return "paging";
}

3.struts.xml設置裝備擺設:

<action name="income"
    class="com.xqh.action.IncomeAction">
    <!-- 為兩個邏輯視圖設置裝備擺設視圖頁面 -->
    <result name="error">/error.jsp</result>
    <result name="paging">/income/income_list.jsp</result>
    <result name="update">/income/income_edit.jsp</result>
</action>

4.顯示界面income_list.jsp

<%@ page language="java" pageEncoding="GBK"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<head>
  <title>支出列表</title>
  <meta http-equiv="pragma" content="no-cache">
  <meta http-equiv="cache-control" content="no-cache">
  <meta http-equiv="expires" content="0">
  <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
  <meta http-equiv="description" content="This is my page">
  <link rel="stylesheet" type="text/css" href="../images/styles.css">
</head>
<body>
  <div class="div1">
    <table width="100%" cellpadding="0" cellspacing="0" border="0"
      align="center">
      <tr>
        <td class="td_title1">
          ·以後地位:支出治理>>檢查支出
        </td>
      </tr>
      <tr>
        <td bgcolor="#FFFFFF" height="50">
          <br>
          <table border="1" align="center" width="700" cellpadding="1"
            cellspacing="1" bgcolor="#036500" bordercolor="#FFFFF">
            <tr bgcolor="#FFFFFF">
              <td class="tb_tl" align="center">
                支出編號
              </td>
              <td class="tb_tl" align="center">
                日期
              </td>
              <td class="tb_tl" align="center">
                方法
              </td>
              <td class="tb_tl" align="center">
                金額
              </td>
              <td class="tb_tl" align="center">
                項目
              </td>
              <td class="tb_tl" align="center">
                起源
              </td>
              <td class="tb_tl" align="center">
                人員
              </td>
              <td class="tb_tl" align="center">
                備注
              </td>
              <td class="tb_tl" align="center">
                操作
              </td>
            </tr>
            <s:iterator value="#request.income">
              <tr bgcolor="#FFFFFF">
                <td align="center"><s:property value="id"/></td>
                <td align="center"><s:date name="date" format="yyyy-MM-dd"/></td>
                <td align="center"><s:property value="style"/></td>
                <td align="center"><s:property value="money"/></td>
                <td align="center"><s:property value="project"/></td>
                <td align="center"><s:property value="source"/></td>
                <td align="center"><s:property value="personnel"/></td>
                <td align="center"><s:property value="remarks"/></td>
                <td align="center">
                  <a href="javascript:if(confirm('肯定要刪除${id}嗎?'))location='income!del?id=${id}'">刪除</a>
                  <a href="javascript:if(confirm('肯定要修正${id}嗎?'))location='income!updateTo?id=${id}'">修正</a>
                </td>
              </tr>
            </s:iterator>
          </table>
          <center>
              總共有${allPage}頁,   以後是第${offset}頁
              <a href="income!paging?page=0"><font size="2" color="blue">首頁</font></a>
              <a href="javascript:if(${offset}>1)location='income!paging?page=${page-1}'"><font size="2" color="red">上一頁</font></a>
              <a href="javascript:if(${offset}<${allPage})location='income!paging?page=${page+1}'"><font size="2" color="red">下一頁</font></a>
              <a href="income!paging?page=${allPage-1}"><font size="2" color="blue">末頁</font></a>
          </center>
        </td>
      </tr>
    </table>
  </div>
</body>

5.分頁成果:

本文章未供給底層數據庫中的完成,但只需控制分頁道理,信任這成績不年夜。詳細分頁道理可參照後面一篇:《Hibernate框架數據分頁技巧實例剖析》

願望本文所述對年夜家基於Hibernate框架的Java法式設計有所贊助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved