package
com.jdsy.common.hibernate;
import java.io.Serializable;
import java.sql.Statement;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Projection;
import org.hibernate.criterion.Projections;
import org.springframework.dao.DataAccessException;
import org.springframework.orm.ObjectRetrievalFailureException;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
public abstract class BaseDAO extends HibernateDaoSupport ... {
/** *//**
* 根据查询条件进行分页查询
*
* @param detachedCriteria
* 查询条件
* @param page
* 第几页
* @param pageSize
* 每页显示多少行
* @return 分页对象
* @throws DataAccessException
*/
public PageData findPageByCriteria(
final DetachedCriteria detachedCriteria, final int page,
final int pageSize) throws DataAccessException ...{
return (PageData) super.getHibernateTemplate().execute(
new HibernateCallback() ...{
public Object doInHibernate(Session session)
throws HibernateException ...{
org.hibernate.impl.CriteriaImpl criteria = (org.hibernate.impl.CriteriaImpl) detachedCriteria
.getExecutableCriteria(session);
Projection projection = criteria.getProjection();
int totalCount = ((Integer) criteria.setProjection(
Projections.rowCount()).uniqueResult())
.intValue();
if (totalCount == 0) ...{
return new PageData();
}
criteria.setProjection(projection);
criteria.setProjection(null);
int startIndex = (page - 1) * pageSize;
List list = criteria.setFirstResult(startIndex)
.setMaxResults(pageSize).list();
PageData pg = new PageData();
pg.setPageSize(pageSize);
pg.setPage(page);
pg.setCount(totalCount);
pg.setCurrentList(list);
return pg;
}
});
}
}
import java.io.Serializable;
import java.sql.Statement;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Projection;
import org.hibernate.criterion.Projections;
import org.springframework.dao.DataAccessException;
import org.springframework.orm.ObjectRetrievalFailureException;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
public abstract class BaseDAO extends HibernateDaoSupport ... {
/** *//**
* 根据查询条件进行分页查询
*
* @param detachedCriteria
* 查询条件
* @param page
* 第几页
* @param pageSize
* 每页显示多少行
* @return 分页对象
* @throws DataAccessException
*/
public PageData findPageByCriteria(
final DetachedCriteria detachedCriteria, final int page,
final int pageSize) throws DataAccessException ...{
return (PageData) super.getHibernateTemplate().execute(
new HibernateCallback() ...{
public Object doInHibernate(Session session)
throws HibernateException ...{
org.hibernate.impl.CriteriaImpl criteria = (org.hibernate.impl.CriteriaImpl) detachedCriteria
.getExecutableCriteria(session);
Projection projection = criteria.getProjection();
int totalCount = ((Integer) criteria.setProjection(
Projections.rowCount()).uniqueResult())
.intValue();
if (totalCount == 0) ...{
return new PageData();
}
criteria.setProjection(projection);
criteria.setProjection(null);
int startIndex = (page - 1) * pageSize;
List list = criteria.setFirstResult(startIndex)
.setMaxResults(pageSize).list();
PageData pg = new PageData();
pg.setPageSize(pageSize);
pg.setPage(page);
pg.setCount(totalCount);
pg.setCurrentList(list);
return pg;
}
});
}
}