- 浏览: 117696 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (63)
- struts (7)
- spring (12)
- Hibernate (14)
- struts+spring+hibernate (11)
- Ajax (1)
- DWR (0)
- JSON (0)
- Junit (0)
- Lucene (15)
- Compass (0)
- Tomcat(Jsp) (0)
- MySql (0)
- JavaScript (0)
- Html (0)
- UML (0)
- Log4j (0)
- Ant (0)
- Acegi (0)
- (My)eclipse (0)
- java2 (0)
- Jakarta Commons (0)
- java Web (0)
- Ruby (0)
- Ruby On Rails (0)
- IBatis (0)
- 版本控制 (0)
- eXtremeComponents (0)
- SiteMesh (0)
- IT相关 (0)
- 电子商务 (0)
- 随笔 (0)
- 正则表达式 (0)
- 测试资料 (0)
- 个人收藏 (0)
- 开发经验 (0)
- 名词解释(java,j2ee) (1)
- 英语 (0)
- java规则引擎 (0)
- CMS系统 (0)
- XML操作 (0)
- jvm (0)
- 开源工具收集 (0)
- webService (2)
最新评论
-
锦毛鼠:
请问下您现在有没有这个demo啊?可以发我看看吗?
cxf webservice身份验证 -
z276356445t:
LZ,你写的类文件怎么和配置文件中的不一样呢,求解.
spring 定时器 -
j2eeli:
感谢共享!
spring 定时器 -
gimy:
写的很清楚,谢谢!
Spring-MultiActionController -
valgrind:
Exception in thread "main& ...
Lucene中文分词组件 JE-Analysis 1.4.0
要分页就必须要有取数据库的起始位置和取多少记录,还有要有总记录
用spring来结合hibernate实现分页,
首先创建一个PageBean.java:
package com.binghe.spring;
public class PageBean {
private int count = 0; // 记录总数
private int pageSize = 20; // 每页显示记录数
private int pageCount = 0; // 总页数
private int page = 1; // 当前页数
private String totalCountSQL;// 得到总记录数sql语句
private String listSQL;// 得到查询记录sql语句
public int getCount() {
return count;
}
public void setCount(int count) {
if (pageSize != 0) {
pageCount = count / pageSize;
if (count % pageSize != 0) {
pageCount++;
}
}
this.count = count;
}
public String getListSQL() {
return listSQL;
}
public void setListSQL(String listSQL) {
this.listSQL = listSQL;
}
public int getPage() {
return page;
}
public void setPage(int page) {
this.page = page;
}
public int getPageCount() {
return pageCount;
}
public void setPageCount(int pageCount) {
this.pageCount = pageCount;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public String getTotalCountSQL() {
return totalCountSQL;
}
public void setTotalCountSQL(String totalCountSQL) {
this.totalCountSQL = totalCountSQL;
}
}
第二,创建一个接口:PaginateInterface.java
package com.binghe.spring;
import java.io.Serializable;
import java.util.List;
public interface PaginateInterface extends Serializable {
public List getList(PageBean page);
public String getToolsMenu(PageBean page);
public int getTotalCount(PageBean p, String str[], Object ob2[])
throws Exception;
public int getTotalCount(PageBean page) throws Exception;
public List getList(PageBean page, String str[], Object ob2[])
throws Exception;
}
第三,创建一个继承spring 的org.springframework.orm.hibernate3.support.HibernateDaoSupport的类Paginate.java,原码如下
package com.binghe.spring;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
public class Paginate extends HibernateDaoSupport implements PaginateInterface {
/**
* 显示用的菜单
*/
public String getToolsMenu(PageBean p) {
StringBuffer str = new StringBuffer("");
int next, prev;
prev = p.getPage() - 1;
next = p.getPage() + 1;
if (p.getPage() > 1) {
str
.append("<a href=\"#\" onclick=\"document.forms(0).pages.value="http://www.zhmy.com/1;document.forms(0).submit();\"">首页</a> ");
} else {
str.append("<a href=\"#\">首页</a> ");
}
if (p.getPage() > 1) {
str.append("<a href=\"#\" onclick='document.forms(0).pages.value="
+ prev + ";document.forms(0).submit();'>上页</a> ");
} else {
str.append("<a href=\"#\">上页</a> ");
}
if (p.getPage() < p.getPageCount()) {
str.append("<a href=\"#\" onclick='document.forms(0).pages.value="
+ next + ";document.forms(0).submit();'>下页</a> ");
} else {
str.append("<a href=\"#\" >下页</a> ");
}
if (p.getPageCount() > 1 && p.getPage() != p.getPageCount()) {
str.append("<a href=\"#\" onclick='document.forms(0).pages.value="
+ p.getPageCount()
+ ";document.forms(0).submit();'>末页</a> ");
} else {
str.append("<a href=\"#\" >末页</a> ");
}
str.append(" 共" + p.getCount() + "条记录");
str
.append(" 每页<SELECT size=1 name=pagesize onchange='this.form.pages.value="http://www.zhmy.com/1;this.form.pageSize.value=this.value;this.form.submit();"'>");
if (p.getPageSize() == 3) {
str.append("<OPTION value=3 selected>3</OPTION>");
} else {
str.append("<OPTION value=3>3</OPTION>");
}
if (p.getPageSize() == 10) {
str.append("<OPTION value=10 selected>10</OPTION>");
} else {
str.append("<OPTION value=10>10</OPTION>");
}
if (p.getPageSize() == 20) {
str.append("<OPTION value=20 selected>20</OPTION>");
} else {
str.append("<OPTION value=20>20</OPTION>");
}
if (p.getPageSize() == 50) {
str.append("<OPTION value=50 selected>50</OPTION>");
} else {
str.append("<OPTION value=50>50</OPTION>");
}
if (p.getPageSize() == 100) {
str.append("<OPTION value=100 selected>100</OPTION>");
} else {
str.append("<OPTION value="http://www.zhmy.com/100>100</OPTION>");
}
str.append("</SELECT>");
str.append(""条 分" + p.getPageCount() + "页显示 转到");
str
.append("<SELECT size=1 name=Pagelist onchange='this.form.pages.value=this.value;this.form.submit();'>");
for (int i = 1; i < p.getPageCount() + 1; i++) {
if (i == p.getPage()) {
str.append("<OPTION value=" + i + " selected>" + i
+ "</OPTION>");
} else {
str.append("<OPTION value=" + i + ">" + i + "</OPTION>");
}
}
str.append("</SELECT>页");
str.append("<INPUT type=hidden value=" + p.getPage()
+ " name=\"pages\" > ");
str.append("<INPUT type=hidden value=" + p.getPageSize()
+ " name=\"pageSize\"> ");
return str.toString();
}
public int getTotalCount(PageBean p) throws Exception {
List list = getHibernateTemplate().find(p.getTotalCountSQL());
int count = 0;
if (list.size() > 0) {
count = ((Integer) list.get(0)).intValue();
}
return count;
}
public List getList(PageBean p) {
Session session = this.getSession();
Query q = session.createQuery(p.getListSQL());
q.setFirstResult((p.getPage() - 1) * p.getPageSize());
q.setMaxResults(p.getPageSize());
return q.list();
}
public List getList(PageBean p, String str[], Object ob2[]) {
Session session = this.getSession();
Query q = session.createQuery(p.getListSQL());
for (int i = 0; i < str.length; i++) {
q.setParameter(str[i], ob2[i]);
}
q.setFirstResult((p.getPage() - 1) * p.getPageSize());
q.setMaxResults(p.getPageSize());
return q.list();
}
public int getTotalCount(PageBean p, String str[], Object ob2[])
throws Exception {
List list = getHibernateTemplate().findByNamedParam(
p.getTotalCountSQL(), str, ob2);
int count = 0;
if (list.size() > 0) {
count = ((Integer) list.get(0)).intValue();
}
return count;
}
}
这样就定义好了分页的准备工作,下面就是怎样使用了。在spring中配置好,上面的借口要注入的地方,这是在spring配置文件中目标代码的配置代码:
<bean id="paginateProxy"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager">
<ref bean="transactionManager" />
</property>
<property name="target">
<ref local="paginate" />
</property>
<property name="transactionAttributes">
<props>
<prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean>
注入的地方:在bookTypeDAO中要调用目标方法
<bean id="bookTypeDAO"
class="com.binghe.spring.booktype.BookTypeDAOImp">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
<property name="paginate">
<ref bean="paginateProxy" />
</property>
</bean>
在action中得到页面传来的页数和页面显示的记录数:
public ActionForward displayAll(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
HttpSession session = request.getSession();
ActionMessages errors = new ActionMessages();
UserBean ub = new UserBean();
if (session.getAttribute(Constants.SESSION_USER) != null) {
ub = (UserBean) session.getAttribute(Constants.SESSION_USER);
} else {
errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(
"system.logon.not.logon"));
saveMessages(request, errors);
return mapping.findForward(Constants.FORWARD_LOGON);
}
PageBean page = new PageBean();
String pagesize = request.getParameter("pagesize");
String pages = request.getParameter("pages");
if (pagesize != null) {
page.setPageSize(Integer.parseInt(pagesize));
}
if (pages != null) {
page.setPage(Integer.parseInt(pages));
}
try {
List bts = bookTypeDAO.findAllBookType(page);
request.setAttribute(Constants.KEY_BOOKTYPES, bts);
} catch (Exception e) {
e.printStackTrace();
}
request.setAttribute("toolsmenu", bookTypeDAO.getPaginate()
.getToolsMenu(bookTypeDAO.getPageBean()));
return mapping.findForward(Constants.FORWARD_SUCCESS);
}
下面是BookDAO接口代码:
package com.binghe.spring.booktype;
import java.io.Serializable;
import java.util.List;
import com.binghe.hibernate.booktype.BookType;
import com.binghe.spring.PageBean;
import com.binghe.spring.PaginateInterface;
public interface BookTypeDAO extends Serializable {
public abstract PaginateInterface getPaginate();
public abstract PageBean getPageBean();
public abstract boolean checkBookTypeIsValid(String name) throws Exception;
public abstract void addBookType(BookType bookType) throws Exception;
public abstract void updateBookType(BookType bookType) throws Exception;
public abstract void deleteBookType(Integer id) throws Exception;
public abstract void deleteAllBookType(String ids[]) throws Exception;
public abstract BookType findBookTypeById(Integer id) throws Exception;
public abstract List findAllBookType() throws Exception;
public abstract List findAllBookType(PageBean page) throws Exception;
}
下面是BookDAOImp中的调用代码:
package com.binghe.spring.booktype;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import com.binghe.hibernate.booktype.BookType;
import com.binghe.utils.DeptBean;
import com.binghe.spring.PageBean;
import com.binghe.spring.Paginate;
import com.binghe.spring.PaginateInterface;
import com.binghe.utils.UserBean;
public class BookTypeDAOImp extends HibernateDaoSupport implements BookTypeDAO {
private PaginateInterface paginate;
private PageBean pageBean = new PageBean();
public PageBean getPageBean() {
return pageBean;
}
public void setPageBean(PageBean pageBean) {
this.pageBean = pageBean;
}
public PaginateInterface getPaginate() {
return paginate;
}
public void setPaginate(PaginateInterface paginate) {
this.paginate = paginate;
}
public void addBookType(BookType bookType) throws Exception {
this.getHibernateTemplate().save(bookType);
}
public boolean checkBookTypeIsValid(String name) throws Exception {
String names[] = new String[1];
names[0] = name;
boolean valid = false;
List list = this.getHibernateTemplate().find(
"select b.id from BookType b where b.name=?", names);
if (list.size() > 0) {
valid = true;
}
return valid;
}
public void updateBookType(BookType bookType) throws Exception {
this.getHibernateTemplate().update(bookType);
}
public BookType findBookTypeById(Integer id) throws Exception {
String sql = "select b,u.userName,d.deptName "
+ " from BookType b,UserBean u,DeptBean d "
+ " where b.userId=u.OID and u.deptOID=d.OID and b.id=:id";
List list = this.getHibernateTemplate().findByNamedParam(sql, "id", id);
Iterator it = list.iterator();
BookType b = null;
UserBean u = new UserBean();
DeptBean d = new DeptBean();
if (it.hasNext()) {
Object o[] = (Object[]) it.next();
b = (BookType) o[0];
u.setUserName((String) o[1]);
d.setDeptName((String) o[2]);
u.setDept(d);
b.setUser(u);
}
return b;
}
public List findAllBookType() throws Exception {
List bookTypes = new ArrayList();
String sql = "select b,u.userName,d.deptName "
+ " from BookType b,UserBean u,DeptBean d "
+ " where b.userId=u.OID and u.deptOID=d.OID";
List list = this.getHibernateTemplate().find(sql);
Iterator it = list.iterator();
while (it.hasNext()) {
Object o[] = (Object[]) it.next();
BookType b = null;
UserBean u = new UserBean();
DeptBean d = new DeptBean();
b = (BookType) o[0];
u.setUserName((String) o[1]);
d.setDeptName((String) o[2]);
u.setDept(d);
b.setUser(u);
bookTypes.add(b);
}
if (bookTypes.size() > 0)
return bookTypes;
return null;
}
public List findAllBookType(PageBean p) throws Exception {
List bookTypes = new ArrayList();
String sql = "select b,u.userName,d.deptName "
+ " from BookType b,UserBean u,DeptBean d "
+ " where b.userId=u.OID and u.deptOID=d.OID";
String sql2 = "select count(*) from BookType";
p.setListSQL(sql);
p.setTotalCountSQL(sql2);
p.setCount(this.getPaginate().getTotalCount(p));
this.setPageBean(p);
List list = this.getPaginate().getList(p);
Iterator it = list.iterator();
while (it.hasNext()) {
Object o[] = (Object[]) it.next();
BookType b = null;
UserBean u = new UserBean();
DeptBean d = new DeptBean();
b = (BookType) o[0];
u.setUserName((String) o[1]);
d.setDeptName((String) o[2]);
u.setDept(d);
b.setUser(u);
bookTypes.add(b);
}
if (bookTypes.size() > 0)
return bookTypes;
return null;
}
public void deleteBookType(Integer id) throws Exception {
BookType bookType = (BookType) this.getHibernateTemplate().load(
BookType.class, id);
getHibernateTemplate().delete(bookType);
}
public void deleteAllBookType(String ids[]) throws Exception {
List list = new ArrayList();
for (int i = 0; i < ids.length; i++) {
BookType bookType = (BookType) this.getHibernateTemplate().load(
BookType.class, new Integer(ids[i]));
list.add(i, bookType);
}
getHibernateTemplate().deleteAll(list);
}
}
这是我写的一个项目中抽取的代码,上面全是代码形式没有文字说明,如果有经验的话我觉得会看懂的,看不懂的话可以发表评论。
java资源网收集整理
请记住本文永久地址:http://www.javaresource.org/hibernate/hibernate-73848.html
发表评论
-
利用Spring AOP 缓存方法结果集(下)
2007-09-28 10:39 2312invoke方法中,首先根据key查询缓存(key=class ... -
利用Spring AOP 缓存方法结果集(上)
2007-09-28 10:39 1546我们都知道Hibernate可以用ehcache来作为Seco ... -
关于spring声明式事务管理异常处理的测试和小结
2007-09-28 10:36 2176关于spring事务管理以及异常处理的帖子,本论坛争论颇多,各 ... -
Spring与Struts如何整合
2007-09-28 10:35 2631为了在Struts中加载Spring ... -
Struts+Spring+Hibernate实现上传下载(四)
2007-09-28 10:10 2471Web层实现 1、Web层 ... -
Struts+Spring+Hibernate实现上传下载(三)
2007-09-28 10:09 2004业务层 1、业务层接口 "面向接口而非面 ... -
Struts+Spring+Hibernate实现上传下载(二)
2007-09-28 10:08 2259数据持久层 1、领域对象及映射文件 您可以使用Hi ... -
Struts+Spring+Hibernate实现上传下载(一)
2007-09-28 10:06 2624下载本文源代码 引言 文件的上传和下载在J2EE编 ... -
Hibernate/Spring/Struts架构使用OpenSessionInView的
2007-09-27 17:03 1982今天有一个朋友问了我一个问题,他使用的是Hibernate/ ... -
Open Session In View探讨
2007-09-27 17:02 900在没有使用Spring提供的O ...
相关推荐
例如,struts.xml中配置Action类及其结果视图,applicationContext.xml中配置Spring Bean,而hibernate.cfg.xml则定义了数据库连接和实体类映射。 在本项目中,"说明.txt"文件可能包含了详细的步骤指导,包括如何...
DWR+Struts+spring+hibernate的订货系统,自己添加的dwr功能
论坛系统项目(Struts 2+Hibernate+Spring实现)论坛系统项目(Struts 2+Hibernate+Spring实现)论坛系统项目(Struts 2+Hibernate+Spring实现)论坛系统项目(Struts 2+Hibernate+Spring实现)论坛系统项目(Struts...
基于spring实现的网上订餐系统(struts+spring+hibernate+SQL Server) 基于spring实现的网上订餐系统(struts+spring+hibernate+SQL Server) 基于spring实现的网上订餐系统(struts+spring+hibernate+SQL Server) 基于...
基于struts+spring+hibernate+oracle的移动ssh项目源码 基于struts+spring+hibernate+oracle的移动ssh项目源码 基于struts+spring+hibernate+oracle的移动ssh项目源码 基于struts+spring+hibernate+oracle的移动ssh...
2. **配置文件**:struts-config.xml定义Struts的配置,spring-beans.xml管理Spring的bean,hibernate.cfg.xml配置Hibernate的数据库连接,可能还有实体类的映射文件(hbm.xml或使用注解)。 3. **JSP页面**:展示...
基于JavaWeb实现的图书管理系统(struts+spring+hibernate+SQL Server) 基于JavaWeb实现的图书管理系统(struts+spring+hibernate+SQL Server) 基于JavaWeb实现的图书管理系统(struts+spring+hibernate+SQL Server) ...
简单struts+spring+hibernate搭建,配置,适合初学者
SSH是 struts+spring+hibernate的一个集成框架,是目前比较流行的一种Web应用程序开源框架 现在的结构是,Struts负责显示层,Hibernate负责持久层,Spring负责中间的业务层,另外,由于Spring使用的依赖注射以及AOP...
项目原型:Struts2.3.16 + Spring4.1.1 + Hibernate4.3.6 二、 项目目的: 整合使用最新版本的三大框架(即Struts2、Spring4和Hibernate4),搭建项目架构原型。 项目架构原型:Struts2.3.16 + Spring4.1.1 + ...
农业网站 (ssh) struts 2 +spring+ hibernate农业网站 (ssh) struts 2 +spring+ hibernate农业网站 (ssh) struts 2 +spring+ hibernate农业网站 (ssh) struts 2 +spring+ hibernate农业网站 (ssh) struts ...
网上订餐系统(struts+spring+hibernate).rar 网上订餐设计主要采用采用MYSQL数据库进行数据表的设计,利用JSP的动态生成页面编程技术, 实现了用网络展示餐饮信息、浏览餐饮页面、注册客户、更改客户信息;同时,...
总的来说,这个"struts2+spring2.5+hibernate3.2整合完整项目"提供了一个完整的开发实例,涵盖了前端到后端,以及数据库的各个环节。对于学习者而言,可以深入理解这三大框架的协同工作,提升Java Web开发技能。而...
SSH三大框架,即Struts、Spring和Hibernate,是Java Web开发中的常用技术组合,它们各自负责不同的职责:Struts作为MVC模式中的Controller层,处理用户请求并转发到相应的业务逻辑;Spring则作为核心容器,负责依赖...
AJAX实现用户登录注册(Struts+Spring+Hibernate+Ajax框架) AJAX实现用户登录注册(Struts+Spring+Hibernate+Ajax框架) AJAX实现用户登录注册(Struts+Spring+Hibernate+Ajax框架)
SSH(Struts+Spring+Hibernate)是一个经典的Java Web开发框架,用于构建高效、可扩展的企业级应用程序。这个教务管理信息系统是基于SSH框架实现的,提供了完整的源代码,可以直接运行,便于开发者学习和参考。 **...
标题和描述中指出的文档《Struts+Spring+Hibernate开发实例.pdf》包含了关于这三个流行的Java开源框架结合使用的示例代码和相关知识点。Struts负责视图与控制器部分,Spring负责业务逻辑层及依赖注入,Hibernate负责...
struts2+spring2.5+hibernate3.2 + freemarker 全新功能实现的增删改查+freemarker 摸版 struts2 的方式自己去看简单。 spring2.5 是用注释来注入 hibernate3.2 是用ejb3注解映射关系 hibernate3 +个属性可以自动...
一个简单的spring+struts2+hibernate+mybatis整合(数据库脚本放在项目资源文件的sql目录下) 因为没想好mvc用springmvc好,还是struts2好 所以没有整合进去
Struts1.2+Spring2.0+Hibernate3.1Struts1.2+Spring2.0+Hibernate3.1Struts1.2+Spring2.0+Hibernate3.1Struts1.2+Spring2.0+Hibernate3.1