频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

应用Hibernate3的DetachedCriteria实现分页查询

来源: 作者:robbin 出处:巧巧读书 2008-02-11 进入讨论组
上一页 1 2 
访问地址 http://www.qqread.com/dotnet/d396758.html

    抽象业务类
/**//** * Created on 2005-7-12 */ package com.javaeye.common.business; import java.io.Serializable; import java.util.List; import org.hibernate.Criteria; import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.criterion.DetachedCriteria; import org.hibernate.criterion.Projections; import org.springframework.orm.hibernate3.HibernateCallback; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import com.javaeye.common.util.PaginationSupport; public abstract class AbstractManager extends HibernateDaoSupport ...{ private boolean cacheQueries = false; private String queryCacheRegion; public void setCacheQueries(boolean cacheQueries) ...{ this.cacheQueries = cacheQueries; } public void setQueryCacheRegion(String queryCacheRegion) ...{ this.queryCacheRegion = queryCacheRegion; } public void save(final Object entity) ...{ getHibernateTemplate().save(entity); } public void persist(final Object entity) ...{ getHibernateTemplate().save(entity); } public void update(final Object entity) ...{ getHibernateTemplate().update(entity); } public void delete(final Object entity) ...{ getHibernateTemplate().delete(entity); } public Object load(final Class entity, final Serializable id) ...{ return getHibernateTemplate().load(entity, id); } public Object get(final Class entity, final Serializable id) ...{ return getHibernateTemplate().get(entity, id); } public List findAll(final Class entity) ...{ return getHibernateTemplate().find("from " + entity.getName()); } public List findByNamedQuery(final String namedQuery) ...{ return getHibernateTemplate().findByNamedQuery(namedQuery); } public List findByNamedQuery(final String query, final Object parameter) ...{ return getHibernateTemplate().findByNamedQuery(query, parameter); } public List findByNamedQuery(final String query, final Object[] parameters)
{ return getHibernateTemplate().findByNamedQuery(query, parameters); } public List find(final String query) ...{ return getHibernateTemplate().find(query); } public List find(final String query, final Object parameter) ...{ return getHibernateTemplate().find(query, parameter); } public PaginationSupport findPageByCriteria(final DetachedCriteria
detachedCriteria)
...{ return findPageByCriteria(detachedCriteria, PaginationSupport.PAGESIZE, 0); } public PaginationSupport findPageByCriteria(final DetachedCriteria
detachedCriteria,
final int startIndex) ...{ return findPageByCriteria(detachedCriteria, PaginationSupport.PAGESIZE,
startIndex); } public PaginationSupport findPageByCriteria(final DetachedCriteria detachedCriteria,
final int pageSize, final int startIndex) ...{ return (PaginationSupport) getHibernateTemplate().execute(
new HibernateCallback() ...{ public Object doInHibernate(Session session) throws
HibernateException ...{ Criteria criteria = detachedCriteria.getExecutableCriteria(session); int totalCount = ((Integer) criteria.setProjection(
Projections.rowCount()).
uniqueResult()).intValue(); criteria.setProjection(null); List items = criteria.setFirstResult(startIndex).
setMaxResults(pageSize).list(); PaginationSupport ps = new PaginationSupport(items,
totalCount, pageSize, startIndex); return ps; } }, true); } public List findAllByCriteria(final DetachedCriteria detachedCriteria) ...{ return (List) getHibernateTemplate().execute(new HibernateCallback() ...{ public Object doInHibernate(Session session) throws HibernateException ...{ Criteria criteria = detachedCriteria.getExecutableCriteria(session); return criteria.list(); } }, true); } public int getCountByCriteria(final DetachedCriteria detachedCriteria) ...{ Integer count = (Integer) getHibernateTemplate().execute(
new HibernateCallback() ...{ public Object doInHibernate(Session session) throws HibernateException ...{ Criteria criteria = detachedCriteria.getExecutableCriteria(session); return criteria.setProjection(Projections.rowCount()).uniqueResult(); } }, true); return count.intValue(); } }
    用户在web层构造查询条件detachedCriteria,和可选的startIndex,调用业务bean的相应findByCriteria方法,返回一个PaginationSupport的实例ps。 

    ps.getItems()得到已分页好的结果集 
    ps.getIndexes()得到分页索引的数组 
    ps.getTotalCount()得到总结果数 
    ps.getStartIndex()当前分页索引 
    ps.getNextIndex()下一页索引 
    ps.getPreviousIndex()上一页索引 更多文章 更多内容请看SQL Server 索引和查询专题Hibernate原理与配置Hibernate应用专题,或进入讨论组讨论。
上一页 1 2 
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章