浏览 2193 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-10-20
一个公告管理的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); } } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |