基于struts2和hibernate的分页实现
在拜读了各位大牛的博客后,加以修改和添加总算是借鉴出了一个可行的分页实现。(●'◡'●)
话不多说,先贴两张效果图吧
接下来是实现代码:
pagingDAOImpl.java
- public class pagingDAOImpl implements pagingDAO{
- public List<PagingTest> getPerPageList(String hql, int firstResult, int pageSize)
- {
- Session session = HibernateSessionFactory.getSession();
- Transaction tx = null;
- List<PagingTest> list = null;
- try
- {
- tx = session.beginTransaction();
- Query query = session.createQuery(hql).setFirstResult(firstResult).setMaxResults(pageSize);
- list = query.list();
- tx.commit();
- }
- catch (Exception e)
- {
- if(tx != null)
- {
- tx.rollback();
- }
- e.printStackTrace();
- }
- finally
- {
- session.close();
- }
- return list;
- }
- @Override
- public int getTotalRows(String hql) {
- Session session = HibernateSessionFactory.getSession();
- Transaction tx = null;
- int totalRows = 0;
- try
- {
- tx = session.beginTransaction();
- Query query = session.createQuery(hql);
- totalRows = query.list().size();
- tx.commit();
- }
- catch (Exception e)
- {
- if(tx != null)
- {
- tx.rollback();
- }
- e.printStackTrace();
- }
- finally
- {
- session.close();
- }
- return totalRows;
- }
- }
pagingServiceImpl.java
- public class pagingServiceImpl implements pagingService {
- private pagingDAO pagingDAO = new pagingDAOImpl();
- /**
- * pageSize为每页显示的记录数
- * page为当前显示的网页
- */
- public PageBean getPageBean(int pageSize, int page)
- {
- PageBean pageBean = new PageBean();
- String hql = "from PagingTest";
- int totalRows = pagingDAO.getTotalRows(hql);
- int totalPage = pageBean.getTotalPages(pageSize, totalRows);
- int currentPage = pageBean.getCurPage(page);
- int firstResult = pageBean.getCurrentPageFirstResult(pageSize, currentPage);
- List<PagingTest> list = pagingDAO.getPerPageList(hql, firstResult, pageSize);
- pageBean.setList(list);
- pageBean.setTotalRows(totalRows);
- pageBean.setCurrentPage(currentPage);
- pageBean.setTotalPage(totalPage);
- return pageBean;
- }
- }
PageBean.java
- public class PageBean
- {
- private List<PagingTest> list; //通过hql从数据库分页查询出来的list集合
- private int totalRows; //总记录数
- private int totalPage; //总页数
- private int currentPage; //当前页
- public List<PagingTest> getList()
- {
- return list;
- }
- public void setList(List<PagingTest> list)
- {
- this.list = list;
- }
- public int getTotalRows()
- {
- return totalRows;
- }
- public void setTotalRows(int totalRows)
- {
- this.totalRows = totalRows;
- }
- public int getTotalPage()
- {
- return totalPage;
- }
- public void setTotalPage(int totalPage)
- {
- this.totalPage = totalPage;
- }
- public int getCurrentPage()
- {
- return currentPage;
- }
- public void setCurrentPage(int currentPage)
- {
- this.currentPage = currentPage;
- }
- /**
- * 得到总页数
- * @param pageSize 每页记录数
- * @param totalRows 总记录数
- * @return 总页数
- */
- public int getTotalPages(int pageSize, int totalRows)
- {
- int totalPage = (totalRows % pageSize == 0)? (totalRows / pageSize): (totalRows / pageSize) + 1;
- return totalPage;
- }
- /**
- * 得到当前开始记录号
- * @param pageSize 每页记录数
- * @param currentPage 当前页
- * @return
- */
- public int getCurrentPageFirstResult(int pageSize, int currentPage)
- {
- int firstResult = pageSize * (currentPage - 1);
- return firstResult;
- }
- /**
- * 得到当前页, 如果为0 则开始第一页,否则为当前页
- * @param page
- * @return
- */
- public int getCurPage(int page)
- {
- int currentPage = (page == 0)? 1: page;
- return currentPage;
- }
- }
PagingAction.java
- public class PagingAction extends ActionSupport
- {
- private pagingService pagingService = new pagingServiceImpl();
- private int page;
- public int getPage()
- {
- return page;
- }
- public void setPage(int page)
- {
- this.page = page;
- }
- @Override
- public String execute() throws Exception
- {
- //表示每页显示5条记录,page表示当前网页
- PageBean pageBean = pagingService.getPageBean(5, page);
- ActionContext context=ActionContext.getContext();
- Map session=context.getSession();
- session.put("pageBean", pageBean);
- return SUCCESS;
- }
- public static void main(String[] args) {
- }
- }
以上就是功能实现的相关代码,至于dao,service,HibernateSessionFactory之类的文件就不贴上来了,上面的代码才是精华!
基于struts2和hibernate的分页实现的更多相关文章
- struts2+spring+hibernate 实现分页
在这里要感谢下这位博友发表的博文 http://www.blogjava.net/rongxh7/archive/2008/11/29/243456.html 通过对他代码的阅读,从而自己实现了网页分 ...
- 基于struts2和hibernate的登录和注册功能——完整实例
1.该项目使用MySQL数据库,数据库名为test,表名info,如图所示: 2.配置web.xml(Struts2使用) <?xml version="1.0" encod ...
- 基于struts2、hibernate、spring、shiro、MySQL的项目开发
使用maven管理jar包的依赖 < project xmlns = “ http://maven.apache.org/POM/4.0.0 ” xmlns :xsi = “ http://ww ...
- 基于Maven的S2SH(Struts2+Spring+Hibernate)框架搭建
1. 前言 基于Maven的开发方式开发项目已经成为主流.Maven能很好的对项目的层次及依赖关系进行管理.方便的解决大型项目中复杂的依赖关系.S2SH(Struts2+Spring+Hibernat ...
- SSH面试题(struts2+Spring+hibernate)
struts2 + Spring +hibernate Hibernate工作原理及为什么要用? 原理: 1.读取并解析配置文件 2.读取并解析映射信息,创建SessionFactory ...
- 粗浅看Struts2和Hibernate框架
----------------------------------------------------------------------------------------------[版权申明: ...
- struts2、hibernate的知识点
以下内容是我在复习struts2.hibernate和spring的时候记下得到,部分书上找不到的内容来自网络 以下是网络部分的原文网站: http://blog.csdn.net/frankaqi/ ...
- Struts2 + Spring + Hibernate 通用 Service 和 DAO
我在 Struts2 + Spring + Hibernate 项目开发中总结出了一个Service 和 DAO ,可以用于处理任何的pojo(bean).使用这两个Service 和 DAO 可以 ...
- SSH(Struts2+Spring+Hibernate)框架搭建流程
添加支持 我先介绍的是MyEclipse9的自带框架支持搭建过程:(完全的步骤 傻瓜式的学习..~) 首先我们来搭建一个Web项目: 一.Hibernate(数据层)的搭建: 相关描述 Ⅰ.服务器与数 ...
随机推荐
- OSG计时器与时间戳
static osg::Timer* sendMsgTimer = new osg::Timer; if (sendMsgTimer->time_m()>100)//100ms {// d ...
- 解决绝对定位div position: absolute 后面的<a> Link不能点击
今天布局的时候,遇到一个bug,当DIV设置为绝对定位时,这个div后面的相对定位的层里面的<a>Link标签无法点击. 网上的解决方案是在绝对定位层里面添加:pointer-events ...
- Navicat Premium连接Oracle 问题汇总
- 从匿名方法到 Lambda 表达式的推演过程
Lambda 表达式是一种可用于创建委托或表达式目录树类型的匿名函数. 通过使用 lambda 表达式,可以写入可作为参数传递或作为函数调用值返回的本地函数. 以上是msdn官网对Lambda 表达式 ...
- direct path read
在11g中,全表扫描可能使用direct path read方式,绕过buffer cache,这样的全表扫描就是物理读了. 在10g中,都是通过gc buffer来读的,所以不存在direct pa ...
- UWP学习记录4-设计和UI之控件和模式1
UWP学习记录4-设计和UI之控件和模式1 1.控件和事件简介 在 UWP 应用开发中,控件是一种显示内容或支持交互的 UI 元素. 控件是用户界面的构建基块. 我们提供了超过 45 种控件供你使用, ...
- windows和linux平台下的通用时间测试函数
Time.cpp ////////////////////////////////////////////////////////////////////////////// // Timer.cpp ...
- 【Gson】互相转化
Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库.可以将一个 JSON 字符串转成一个 Java 对象,或者反过来. 对象转为字符串 Strin ...
- OX中修改文件名
右击文件,显示简介,名称与扩展名
- C++-Qt【5】-QT的QString,char*,QByteArray转化以及中文乱码的问题
引用:http://blog.sina.com.cn/s/blog_a7e2c7490101oatt.html QTextCodec *codec = QTextCodec::codecForName ...