HibernateDAO类概述

本文向大家介绍Hibernate DAO类,可能好多人还不了解Hibernate DAO类,没有关系,看完本文你肯定有不少收获,希望本文能教会你更多东西。

创新互联是一家专注于网站设计制作、成都网站建设与策划设计,九江网站建设哪家好?创新互联做网站,专注于网站建设10余年,网设计领域的专业建站公司;建站业务涵盖:九江等地区。九江做网站价格咨询:18982081108

在Struts分页有两种结构:

1. 在Action中通过DAO查询出所有的记录,然后加到session或request对象中,传到客户端,由JSP进行分页。这种方法对于在数据量少的时候很方便,也不影响速度。

2.在Action中每次通过DAO只查询出一页的记录,再传给JSP页面。这种结构对于数据量大的程序很好,但对于数据量小的情况,会增加对服务器的请求,加大服务器的负载。

1).Hibernate DAO类

 
 
 
  1. package com.jpcf.db.dao;
  2. import com.jpcf.db.model.*;
  3. import com.jpcf.db.helper.HibernateUtil;
  4. import net.sf.hibernate.*;
  5. import java.util.*;
  6. import com.jpcf.db.controller.*;
  7. public class VehiclePropertyDAO {
  8. public Collection findWithPage(int pageSize, int startRow) throws
  9. HibernateException {
  10. Collection vehicleList = null;
  11. Transaction tx = null;
  12. try {
  13. Session session = HibernateUtil.currentSession();
  14. tx = session.beginTransaction();
  15. Query q = session.createQuery("from VehicleProperty vp");
  16. q.setFirstResult(startRow);
  17. q.setMaxResults(pageSize);
  18. vehicleList = q.list();
  19. tx.commit();
  20. } catch (HibernateException he) {
  21. if (tx != null) {
  22. tx.rollback();
  23. }
  24. throw he;
  25. } finally {
  26. HibernateUtil.closeSession();
  27. }
  28. return vehicleList;
  29. }
  30. public int getRows(String query) throws
  31. HibernateException {
  32. int totalRows = 0;
  33. Transaction tx = null;
  34. try {
  35. Session session = HibernateUtil.currentSession();
  36. tx = session.beginTransaction();
  37. totalRows = ((Integer) session.iterate(query).next()).
  38. intValue();
  39. tx.commit();
  40. }
  41. catch (HibernateException he) {
  42. if (tx != null) {
  43. tx.rollback();
  44. }
  45. throw he;
  46. }
  47. finally {
  48. HibernateUtil.closeSession();
  49. }
  50. return totalRows;
  51. }
  52. }

Hibernate DAO类我就贴这些分页需要的代码了。“from VehicleProperty vp”也可以用一个参数传进来,有兴趣的自己改一下吧

2).Action

下面是在Action中用到的代码:

 
 
 
  1. public ActionForward queryWithPage(ActionMapping actionMapping,
  2. ActionForm actionForm
  3. HttpServletRequest httpServletRequest,
  4. HttpServletResponse httpServletresponse) {
  5. Collection clInfos = null;//用于输出到页面的记录集合
  6. int totalRows;//记录总行
  7. VehiclePropertyDAO vehicleDAO = new VehiclePropertyDAO();
  8. //取得当前表中的总行数
  9. try {
  10. totalRows = vehicleDAO.getRows("select count(*) from VehicleProperty");
  11. } catch (Exception ex) {
  12. servlet.log(ex.toString());
  13. return actionMapping.findForward(Constants.FAILURE);
  14. }
  15. //通过PagerHelper类来获取用于输出到页面的pager对象
  16. Pager pager=PagerHelper.getPager(httpServletRequest,totalRows);
  17. //取出从startRow开始的pageSize行记录
  18. try {
  19. clInfos = vehicleDAO.findWithPage(pager.getPageSize(), pager.getStartRow());
  20. }
  21. catch (Exception ex) {
  22. servlet.log(ex.toString());
  23. return actionMapping.findForward(Constants.FAILURE);
  24. }
  25. //把输出的记录集和pager对象保存到request对象中
  26. httpServletRequest.setAttribute("CLINFOS", clInfos);
  27. httpServletRequest.setAttribute("PAGER", pager);
  28. return actionMapping.findForward(Constants.SUCCESS);
  29. }

查询语句select count(*) from VehicleProperty 也可以换成你需要的任意的条件(select count(*) from VehicleProperty where ..)

分享文章:HibernateDAO类概述
文章出自:http://www.shufengxianlan.com/qtweb/news36/158586.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联