基于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(数据层)的搭建: 相关描述 Ⅰ.服务器与数 ...
随机推荐
- 【JavaScript】ES6 新语法
function* 声明 function* 声明(function关键字后跟一个星号)定义一个generator(生成器)函数,返回一个Generator对象. 生成器是一种可以从中退出并在之后重新 ...
- HTML5教程之html 5 本地数据库(Web Sql Database)
HTML5的Web SQL Databases(html5 本地数据库)的确很诱惑人,当你发现可以用与mysql查询一样的查询语句来操作本地数据库时,你会发现这东西挺有趣的.今天,我们一起来了解HTM ...
- 一个从数据库中把数据导成txt的笨办法
create directory DIR_DUMP as '/oradata/data_dump'; CREATE OR REPLACE PROCEDURE anlp_to_txt IS testji ...
- java的remote shell
http://www.ganymed.ethz.ch/ssh2/ 此程序的目的是执行远程机器上的Shell脚本. [环境参数] 远程机器IP:172.17.24.212 用户名:root 密码:zhe ...
- 基于SOUI开发的应用展示
本页面列出基于SOUI开发的产品 欢迎使用SOUI的朋友提供资源:setoutsoft#qq.com #->@ 千万级平台后台在线监测客户端 1, 主页:用于显示管理服务端在线情况,左侧栏包括 ...
- 学习微信小程序之css6
- WebGL入门教程(四)-webgl颜色
前面文章: WebGL入门教程(一)-初识webgl WebGL入门教程(二)-webgl绘制三角形 WebGL入门教程(三)-webgl动画 颜色效果图: 操作步骤: 1.创建HTML5 canva ...
- 【转】Wireshark基本用法
原地址:http://blog.jobbole.com/70907/ 按照国际惯例,从最基本的说起. 抓取报文: 下载和安装好Wireshark之后,启动Wireshark并且在接口列表中选择接口名, ...
- 转:WaitForSingleObject()函数、WaitForMultipleObject()函数
http://blog.csdn.net/xiaobai1593/article/details/6672193 在多线程下面,有时候我们会希望等待某一线程完成了再继续做其他事情,要实现这个目的,可以 ...
- Holographic Remoting
看到微软官方的 Holographic Remoting Player https://developer.microsoft.com/en-us/windows/holographic/hologr ...