`
wenlong342
  • 浏览: 62380 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

hibernate分页

阅读更多
新建表
<!---->
DROP DATABASE IF EXISTS `wjcms`;
CREATE DATABASE `wjcms` /*!40100 DEFAULT CHARACTER SET gb2312 */;
USE `wjcms`;

#
Table structure for table t_article
#

CREATE TABLE `t_article` (
  `a_id` 
int(11NOT NULL auto_increment,
  `a_sort` 
int(11NOT NULL default '0',
  `a_title` 
varchar(50default NULL,
  `a_body` 
text,
  `a_author` 
varchar(11default '',
  `a_hit` 
int(11NOT NULL default '0',
  `c_id` 
int(11default '0',
  `a_date` 
varchar(20default NULL,
  
PRIMARY KEY  (`a_id`)


实体

public class articleVO {
    private int a_id;
    private int a_sort;
    private int a_hit;
    private int c_id;
    private String a_title;
    private String a_body;
    private String a_author;
    private String a_date;
    // getter setter


新建page.java

<!---->package page.dal;

public class page {
    
private int totalRows; //总行数
    private int pageSize = 10//每页显示的行数
    private int currentPage; //当前页号
    private int totalPages; //总页数
    private int startRow; //当前页在数据库中的起始行

    
public page(int _totalRows) {
     totalRows 
= _totalRows;
     totalPages
=totalRows/pageSize;
     
int mod=totalRows%pageSize;
     
if(mod>0){
       totalPages
++;
     }
     currentPage 
= 1;
     startRow 
= 0;
   }

   
public int getStartRow() {
     
return startRow;
   }

   
public int getTotalPages() {
     
return totalPages;
   }

   
public int getCurrentPage() {
     
return currentPage;
   }

   
public int getPageSize() {
     
return pageSize;
   }

   
public void setTotalRows(int totalRows) {
     
this.totalRows = totalRows;
   }

   
public void setStartRow(int startRow) {
     
this.startRow = startRow;
   }

   
public void setTotalPages(int totalPages) {
     
this.totalPages = totalPages;
   }

   
public void setCurrentPage(int currentPage) {
     
this.currentPage = currentPage;
   }

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

   
public int getTotalRows() {
     
return totalRows;
   }

   
public void first() {
     currentPage 
= 1;
     startRow 
= 0;
   }

   
public void previous() {
     
if (currentPage == 1) {
       
return;
     }
     currentPage
--;
     startRow 
= (currentPage - 1* pageSize;
   }

   
public void next() {
     
if (currentPage < totalPages) {
       currentPage
++;
     }
     startRow 
= (currentPage - 1* pageSize;
   }

   
public void last() {
     currentPage 
= totalPages;
     startRow 
= (currentPage - 1* pageSize;
   }

   
public void refresh(int _currentPage) {
     currentPage 
= _currentPage;
     
if (currentPage > totalPages) {
       last();
     }
   }

 }



新建 pageHelp.java

<!---->package page.dal;
import javax.servlet.http.*;

public class PagerHelp {
    
public static page getPager(HttpServletRequest httpServletRequest,int totalRows) {

     
//定义pager对象,用于传到页面
     page pager = new page(totalRows);

     
//从Request对象中获取当前页号
     String currentPage = httpServletRequest.getParameter("currentPage");

     
//如果当前页号为空,表示为首次查询该页
     
//如果不为空,则刷新page对象,输入当前页号等信息
     if (currentPage != null) {
       pager.refresh(Integer.parseInt(currentPage));
     }

     
//获取当前执行的方法,首页,前一页,后一页,尾页。
     String pagerMethod = httpServletRequest.getParameter("pageMethod");

     
if (pagerMethod != null) {
       
if (pagerMethod.equals("first")) {
         pager.first();
       } 
else if (pagerMethod.equals("previous")) {
         pager.previous();
       } 
else if (pagerMethod.equals("next")) {
         pager.next();
       } 
else if (pagerMethod.equals("last")) {
         pager.last();
       }
     }
     
return pager;
   }

}



新建 util.java
<!---->package page.dal;
import net.sf.hibernate.Query;
import net.sf.hibernate.cfg.Configuration;
import java.util.List;
import net.sf.hibernate.HibernateException;
import net.sf.hibernate.SessionFactory;
import net.sf.hibernate.Session;
import java.util.*;
public class util {
    
public util() {
    }
     
private Session ss=null;
    
public Session getSession()
  {
      
//  Configuration config=null;
      SessionFactory sessionFactory;
      
try {
          Configuration cfg 
= new Configuration();
          sessionFactory 
= cfg.addClass(articleVO.class).
                           buildSessionFactory();
          
// SessionFactory sessionFactory=config.buildSessionFactory();
          ss = sessionFactory.openSession();
          
return ss;
      } 
catch (HibernateException ex) {
          System.out.print(
"getsession出错了。。" + ex.getMessage());
          
return null;
      }
  }

  
public int getCount()
  {
      String sql
="select count(*) from articleVO" ;
      
this.getSession();

    
try {
     
// ss.createQuery("select count(a)as cont from articleVO a ");
      int rows= ((Integer) ss.iterate(sql).next()).intValue();
      ss.flush();
      
return rows;

    } 
catch (HibernateException ex) {
        System.out.print(
"ex::"+ex.getMessage());
        
return 0;
    }


  }

  
public Collection  getList(int pagesize,int currow) throws HibernateException {
      Collection vehicleList 
= null;
      
this.getSession();
      Query q
=ss.createQuery("from articleVO");
      q.setFirstResult(currow);
      q.setMaxResults(pagesize);
      vehicleList
=q.list();
      ss.flush();
      
return vehicleList;
  }

}


新建 struts  PageAction.java


<!---->package page.dal;

import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForm;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.Action;
import page.dal.*;
import java.util.*;
import net.sf.hibernate.*;

public class pageAction extends Action {
    
public ActionForward execute(ActionMapping mapping, ActionForm form,
                                 HttpServletRequest request,
                                 HttpServletResponse response) {
        Collection clInfos 
= null;//用于输出到页面的记录集合
        int totalRows;//记录总行数
        util dal=new util();
        totalRows
=dal.getCount();
        System.out.print(
"总行数=="+totalRows);
        page p
=PagerHelp.getPager(request,totalRows);
        
try {
            clInfos 
= dal.getList(p.getPageSize(), p.getStartRow());

        } 
catch (HibernateException ex) {
            System.out.print(
"action里的错误="+ex.getMessage());
        }
        request.setAttribute(
"page",p);
        request.setAttribute(
"list",clInfos);
        
return mapping.findForward("page");
        
//pageForm pageForm = (pageForm) form;
      
//  throw new java.lang.UnsupportedOperationException(
              
//  "Method $execute() not yet implemented.");
    }
}


前台页面

<!----><%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %>
<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ page contentType="text/html; charset=GBK" %>
<html:html>
<head>
<title>
page
</title>
</head>
<body>
<table align="center" border="2">
<tr>
<th>a_title</th>
<th>a_body</th>
<th>a_a_date</th>
<th>a_author</th>
</tr>

<logic:iterate id="listd" name="list">
<tr>
<td>
<bean:write name="listd" property="a_title"/>
</td>
<td>
<bean:write name="listd" property="a_author"/>
</td>
<td>
<bean:write name="listd" property="a_date"/>
</td>
<td>
<bean:write name="listd" property="a_date"/>
</td>
</tr>
</logic:iterate>

</table>

<bean:write name="page" property="currentPage"/>
<bean:write name="page" property="totalPages" />
<html:link action="/pageAction.do?pageMethod=first"
paramName
="page" paramProperty="currentPage" paramId="currentPage">首页</html:link>
   
<html:link action="/pageAction.do?pageMethod=previous"
paramName
="page" paramProperty="currentPage" paramId="currentPage">上一页</html:link>
   
<html:link action="/pageAction.do?pageMethod=next"
paramName
="page" paramProperty="currentPage" paramId="currentPage">下一页</html:link>

   
<html:link action="/pageAction.do?pageMethod=last"
paramName
="page" paramProperty="currentPage" paramId="currentPage">尾页</html:link>
</body>
</html:html>




启动浏览 pageAction.do  运行OK。

 

引用自http://www.blogjava.net/wujun/archive/2006/08/29/65890.html

对原文有所修改。

util.java中,getCount()方法中int rows=((Integer)(ss.createQuery(sql).iterate().next()))
.intValue();

分享到:
评论

相关推荐

    Hibernate分页查询小结

    Hibernate分页查询小结

    Hibernate分页查询原理解读

    #### 三、Hibernate分页查询实现原理 ##### 3.1 使用SQL LIMIT实现分页 对于支持LIMIT关键字的数据库(例如MySQL),Hibernate会通过特定的方言(Dialect)来生成包含LIMIT关键字的SQL语句。具体实现如下: ```...

    hibernate分页查询 数据库连接

    此外,优化查询,避免N+1查询问题,合理设计实体关系,都能有效提升Hibernate分页查询的效率。 总结起来,Hibernate的分页查询和数据库连接管理是其强大功能的重要组成部分。正确理解和使用这些特性,能够帮助...

    hibernate分页Hibernate 分页的设计和编码

    标题与描述均提到了“Hibernate分页的设计和编码”,这表明文章主要聚焦于如何在Hibernate框架中实现数据分页功能。下面将详细解析这一主题的关键知识点。 ### Hibernate分页概念 Hibernate是Java环境下一个开放源...

    hibernate分页查询

    让我们深入探讨Hibernate分页查询的相关知识点。 一、Hibernate分页原理 Hibernate分页查询基于SQL的LIMIT和OFFSET子句,通过Session的createQuery或createSQLQuery方法创建查询,并设置FirstResult和MaxResults...

    strut2.0 + hibernate3.0 + jquery.datatables+mysql 5.0实现的 hibernate分页

    hibernate分页(无排序,搜索,仅仅分页显示),服务器端分页在datatables上展现,有关 datatables的知识请关注它的官网http://www.datatables.net/,datatables的功能很 全面。 2,建表的sql--studentinfo和插入...

    hibernate分页代码

    总结起来,"hibernate分页代码"是一个关于如何在Hibernate中进行分页查询的实践示例,适用于在MyEclipse环境下运行。通过Criteria API或HQL,开发者能够方便地实现分页功能,提升应用性能,为用户提供更好的体验。...

    Struts + Hibernate 分页实现

    在"Struts + Hibernate 分页实现"这个项目中,重点在于如何在Web应用中整合这两个框架,并实现数据的分页显示。分页是大型数据集处理时常见的需求,它能够帮助用户更有效地浏览和管理大量信息,避免一次性加载所有...

    struts2+spring+hibernate分页显示完整代码

    本篇文章将详细讲解如何在基于Struts2、Spring和Hibernate的项目中实现分页功能。 首先,我们从DAO层开始。在`MemberDao`接口中,我们定义了两个关键的方法,一个是用于分页查询,另一个是获取所有记录的数量。这两...

    Struts和Hibernate分页及查询

    在"Struts+Hibernate分页及条件查询练习"这个项目中,开发者可能采用了以下步骤: 1. **配置Struts和Hibernate**:首先,需要在项目中引入Struts和Hibernate的相关库,配置Struts的struts-config.xml文件和...

    使用hibernate分页查询

    1. **配置Hibernate分页**: 在Hibernate中,我们通常使用`Criteria`或`Query` API进行分页查询。`Criteria`提供了一种更面向对象的方式来执行SQL查询,而`Query` API则对应于原生的SQL语句。在这些API中,我们可以...

    hibernate分页技巧

    hibernate分页 博文链接:https://iomo.iteye.com/blog/243518

    Hibernate 分页查询效果

    本篇主要围绕"Hibernate分页查询效果"这一主题,深入探讨如何利用Hibernate框架实现高效、便捷的分页功能。 首先,Hibernate是一个优秀的Java持久化框架,它提供了ORM(对象关系映射)解决方案,使得开发者可以使用...

    高效率的dw+spring+hibernate分页演示例子

    这个"高效率的dw+spring+hibernate分页演示例子"提供了一个实用的示例,展示了如何将这三个框架整合起来,以实现高效的数据分页功能。 首先,让我们来逐一了解这三个技术: 1. **DWR (Direct Web Remoting)**:DWR...

    hibernate实现分页

    ### Hibernate分页基础 1. **Criteria API**:Hibernate的Criteria API允许我们创建动态查询,同时也支持分页。通过设置`setFirstResult()`和`setMaxResults()`方法,可以实现分页效果。例如: ```java Criteria ...

    struts+hibernate分页

    综上所述,"struts+hibernate分页"涉及到的主要是如何在Struts的控制层和Hibernate的数据层之间协调处理分页请求,以及在DAO层利用Hibernate的特性实现数据库查询的分页。理解并掌握这两个框架的分页机制,对于开发...

    java 实现的一个简单的hibernate分页类

    java 实现的一个简单的hibernate分页类 可以设置,从某一条开始取、显示的条数 不依赖struts spring

    hibernate分页例子.rar

    本教程将通过一个具体的“hibernate分页例子”来深入理解如何在Hibernate中实现分页功能。 在实际应用中,当数据量大到一定程度时,一次性加载所有数据会导致内存压力过大,影响系统性能。因此,分页查询成为一种...

    关于Hibernate分页类和jdbc的sql分页完美融合

    本主题将探讨如何在Hibernate分页类和JDBC的SQL分页方法之间实现完美的融合,以提高性能并提供更好的用户体验。 首先,让我们了解一下Hibernate的分页功能。Hibernate提供了一种方便的方式来处理分页查询,通过...

Global site tag (gtag.js) - Google Analytics