这段时间在用dwr和hibernate做任务,结合以前做分页的经验做了个分页DEMO。
一个公告管理的DEMO,代码如下:
1、公告类Placard
package com.linbs.usermanage.model;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;
public class Placard implements java.io.Serializable {
private Integer id;
private String title;
private String content;
private Date submitTime;
private String publisher;
private Byte status;
private Set modules = new HashSet(0);
public Placard() {
}
public Placard(String title, String content, Date submitTime, String publisher, Byte status, Set modules) {
this.title = title;
this.content = content;
this.submitTime = submitTime;
this.status = status;
this.modules = modules;
this.publisher = publisher;
}
public Integer getId() {
return this.id;
}
public void setId(Integer id) {
this.id = id;
}
public String getTitle() {
return this.title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContent() {
return this.content;
}
public void setContent(String content) {
this.content = content;
}
public Date getSubmitTime() {
return this.submitTime;
}
public void setSubmitTime(Date submitTime) {
this.submitTime = submitTime;
}
public Byte getStatus() {
return this.status;
}
public void setStatus(Byte status) {
this.status = status;
}
public Set getModules() {
return modules;
}
public void setModules(Set modules) {
this.modules = modules;
}
public String getPublisher() {
return publisher;
}
public void setPublisher(String publisher) {
this.publisher = publisher;
}
}
2、DAO接口 PlacardDAO
public interface PlacardDAO {
List<Placard> getPlacardByPage(int startIndex , int length, Placard placardExample);
int getPlacardLength(Placard placardExample);
}
3、DAO接口实现:
package com.linbs.usermanage.dao.impl;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Set;
import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Expression;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.ProjectionList;
import org.hibernate.criterion.Projections;
import com.linbs.core.common.exception.BusinessException;
import com.linbs.core.common.hibernate.BaseHibernateDAO;
import com.linbs.usermanage.dao.ModuleDAO;
import com.linbs.usermanage.dao.PlacardDAO;
import com.linbs.usermanage.model.Module;
import com.linbs.usermanage.model.Placard;
public class PlacardDAOImpl extends BaseHibernateDAO implements PlacardDAO {
//分页取得公告,并可根据标题、发布人、所属模块查询公告
public List<Placard> getPlacardByPage(int startIndex , int length, Placard placardExample) {
ModuleDAO moduleDAO = new ModuleDAOImpl();
Criteria criteria = super.getSession().createCriteria(Placard.class);
ProjectionList projectionList = Projections.projectionList();
projectionList.add(Projections.property("id"));
projectionList.add(Projections.property("title"));
projectionList.add(Projections.property("publisher"));
projectionList.add(Projections.property("submitTime"));
projectionList.add(Projections.property("status"));
criteria.setProjection(projectionList);
//条件查询
if(placardExample!=null){
String title = placardExample.getTitle();
if(title!=null){
criteria.add(Expression.like("title","%"+title+"%" ));
}
String publisher = placardExample.getPublisher();
if(publisher!=null){
criteria.add(Expression.like("publisher","%"+publisher+"%"));
}
Set<Module> modules = placardExample.getModules();
if(modules==null || modules.size()!=0){
int moduleId = modules.iterator().next().getId();
criteria.createAlias("modules", "module").add(Expression.eq("module.id", moduleId));
}
}
criteria.addOrder(Order.desc("submitTime"));
criteria.setFirstResult(startIndex);
criteria.setMaxResults(length);
List tempList = criteria.list();
List<Placard> placardList = new ArrayList<Placard>();
if(tempList!=null){
for(int i=0;i<tempList.size();i++){
Object[] tempObj = (Object[])tempList.get(i);
Placard placard = new Placard();
placard.setId((Integer)tempObj[0]);
placard.setTitle((String)tempObj[1]);
placard.setPublisher((String)tempObj[2]);
placard.setSubmitTime((Date)tempObj[3]);
placard.setStatus((Byte)tempObj[4]);
//取得该公告的所属模块
Set modules = moduleDAO.getModulesByPlacard((Integer)tempObj[0]);
placard.setModules(modules);
placardList.add(placard);
}
return placardList;
}
return null;
}
//取得符合标题、发布人、所属模块等条件的公告长度
public int getPlacardLength(Placard placardExample){
Criteria criteria = super.getSession().createCriteria(Placard.class);
criteria.setProjection(Projections.rowCount());
//条件查询
if(placardExample!=null){
String title = placardExample.getTitle();
if(title!=null){
criteria.add(Expression.like("title","%"+title+"%" ));
}
String publisher = placardExample.getPublisher();
if(publisher!=null){
criteria.add(Expression.eq("publisher",publisher));
}
Set<Module> modules = placardExample.getModules();
if(modules==null || modules.size()!=0){
int moduleId = modules.iterator().next().getId();
criteria.createAlias("modules", "module").add(Expression.eq("module.id", moduleId));
}
}
List<Integer> countList = criteria.list();
return countList.get(0);
}
}
分享到:
相关推荐
在这个“struts+spring+hibernate+dwr+分页例子”中,我们将深入探讨这四个框架的集成以及分页功能的实现。 1. **Struts**: Struts 是一个基于MVC(Model-View-Controller)设计模式的Java Web框架。它主要负责处理...
【标题】:“影院信息查询(java+jsp+hibernate+dwr框架+分页技术+ajax+oracle)”是一个综合性的Web应用项目,它利用了一系列先进的技术和工具来实现对影院信息的高效、交互式查询。这个项目的核心在于,它展示了...
《整合Hibernate、Spring与DWR实现超强分页功能详解》 在现代Web开发中,提供高效、用户体验良好的分页功能是必不可少的。本教程将深入探讨如何利用Hibernate作为持久层框架,Spring作为应用层框架,以及Direct Web...
Struts新闻管理系统是一款基于Java技术开发的Web应用,它整合了Hibernate对象关系映射框架和Direct Web Remoting (DWR) 技术,为用户提供了一种高效、灵活的方式来管理和发布新闻内容。在这个系统中,Struts作为MVC...
4. **前端交互**:在HTML页面中,使用JavaScript(可能是jQuery或其他库)处理用户点击分页链接的事件,调用DWR映射的JavaScript函数,传入当前页码和每页大小。 5. **展示数据**:接收到服务器返回的分页数据后,...
在文件"PageDivision"中,可能包含了SSH框架的配置文件(如struts.xml、spring.xml、hibernate.cfg.xml)、Java源代码(如Controller、Service、DAO类)、DWR配置文件(dwr.xml)、以及相关的HTML和JavaScript文件。...
1. **前端设计**:使用HTML和JavaScript构建分页界面,DWR提供API来发送Ajax请求。 2. **后端处理**:Struts Action接收到请求后,根据请求参数(如当前页码和每页记录数)调用Spring管理的Service层方法。 3. **...
### dwr+hibernate实现的分页技术详解 在当今快速发展的互联网环境中,网站和应用程序需要处理大量的数据。为了提高用户体验并优化服务器资源利用,分页技术成为了必不可少的一部分。本文将详细介绍如何通过结合dwr...
【标题】"dwr+struts+hibernate+jquery tomcat日志查询系统"是一个基于Web的应用程序,主要用于实时、高效地查询Tomcat服务器的日志内容,并且具备分页功能,提供良好的用户体验。这个系统整合了多个技术框架,下面...
通过SSH框架,可以利用Hibernate的Criteria或HQL查询实现数据的分页获取,同时在前端使用DWR调用服务器端的方法,获取指定页码的数据,动态加载到页面上,提供流畅的用户体验。 2. **AJAX页面无刷新**:DWR的核心...
1. EXTJS:EXTJS 是一个JavaScript库,专为创建富客户端(Rich Internet Applications, RIA)而设计。它提供了丰富的用户界面组件,如表格、面板、窗口、菜单等,使得开发者能够构建出具有桌面应用般体验的Web应用。...
在本文中,我们将深入探讨如何实现一个基于ExtJS和Direct Web Remoting (DWR)的带分页、分组及后台排序功能的Grid组件。这个功能整合了多种技术,包括ExtJS、DWR、Spring和Hibernate,以创建一个高效且灵活的数据...
1. **SSH+jQuery+DWR+EasyUI 实战**:本文档通过一系列的实战案例展示了如何将 Struts2、Spring3、Hibernate4 与 DWR、jquery2.x 和 easyUI1.3.x 结合起来开发实际的应用。 2. **实战案例详解**: - SSH 架构集成...
1. **DWR (Direct Web Remoting)**:DWR 是一个Java库,它允许JavaScript在客户端和服务器之间进行直接的远程调用,就像它们在同一台机器上运行一样。这使得Web应用能够实现实时交互,提供类似桌面应用的用户体验。...
关键JS代码已经加入注释,方便理解. 数据库结构比较简单,可以参照hibernate映射文件自己创建数据库,也可以使用文件下的sql脚本生成数据库. IDE:myeclipse 6.0.1 数据库: sqlserver2000
本压缩包文件包含的类文件主要用于实现DWR与Hibernate结合进行数据分页的功能。下面我们将详细探讨这些知识点。 首先,DWR是一种JavaScript库,它允许在客户端的JavaScript代码和服务器端的Java代码之间进行实时的...
在本篇博文中,我们将深入探讨如何利用DWR(Direct Web Remoting)、Hibernate和Spring框架来实现一个高效的分页功能。这些技术都是Java Web开发中的关键组件,它们各自扮演着不同的角色,共同构建出强大的后端系统...
4. **JavaScript分页UI**: - 创建一个用户友好的分页界面,通常包括“上一页”、“下一页”按钮,页码选择器等元素。 - 使用JavaScript监听这些元素的事件,当用户交互时,通过DWR调用服务器端的分页方法,动态...
1. 配置 Maven 项目,添加Displaytag、DWR、Spring 和 Hibernate 的依赖。 2. 设计和创建数据库模型,利用Hibernate的注解或XML配置文件建立ORM映射。 3. 在Spring配置文件中定义Bean,包括数据源、SessionFactory、...
DWR(Direct Web Remoting)是一种Java库,它允许JavaScript在客户端与服务器端进行交互,实现了AJAX(Asynchronous JavaScript and XML)的功能,无需页面刷新即可更新部分网页内容。在这个项目中,"dwr无刷新分页...