1、第一种方式
public class DetailDaoImpl extends HibernateTemplate implements DetailDaoInterface {
private Log log=LogFactory.getLog(ConstantsApplication.P2PAPPLICATION_LOG);
/**
* 查询符合条件的指定区间的记录
*/
public List<AppInfoPO> queryApproveDetailInfo(ApproveDetailQueryModel qm, int startNumber, int maxNumber) throws APSException {
log.info("开始查询明细……");
try{
DetachedCriteria c = this.getDetachedCriteria(qm);
return findByCriteria(c,startNumber,maxNumber);
} catch (Exception e) {
log.error("查询明细异常", e);
throw new APSException("查询明细异常,在方法queryApproveDetailInfo中", e);
}
}
/**
* 查询符合条件的记录数
*/
public int queryApproveDetailInfoCount(ApproveDetailQueryModel qm) throws APSException {
log.info("开始查询审批明细……");
DetachedCriteria d = this.getDetachedCriteria(qm);
d.setProjection(Projections.rowCount());
List list = this.findByCriteria(d);
if (list != null && list.size() > 0)
return Integer.valueOf(list.get(0).toString());
return 0;
}
/**
* 创建公共查询条件
* @param qm
* @return
*/
public DetachedCriteria getDetachedCriteria(ApproveDetailQueryModel qm){
DetachedCriteria c = DetachedCriteria.forClass(AppInfoPO.class);
if(!CommonMethod.isNull(qm.getCreditDateisnotnull())){
c.add(Property.forName("creditDate").isNotNull());
}
c.addOrder(Order.asc("creditName"));
c.addOrder(Order.desc("creditDate"));
return c;
}
2、SQL分页
Query query = session.createQuery(hql);
query.setFirstResult(offset);
query.setMaxResults(length);
List list = query.list();
hxzon
public List getCategorys(final int currentpage, final int pagesize) {
log.debug("finding all ShbbsCategory instances");
List list = getHibernateTemplate().executeFind(new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
String hql = "from ShbbsCategory";
Query query = session.createQuery(hql);
query.setFirstResult((currentpage - 1) * pagesize);
query.setMaxResults(pagesize);
List list = query.list();
return list;
}
});
return list;
}
预编译
String hql = "FROM ShbbsCategory AS p WHERE p.uid LIKE ? OR p.name LIKE ?";
Query query = session.createQuery(hql);
query.setString(0, "%" + cond + "%");
query.setString(1, "%" + cond + "%");
query.setFirstResult((currentpage - 1) * pagesize);
query.setMaxResults(pagesize);
集合总数1
public Integer getSaleChanceListCount() {
final String hql = "select count(*) from SaleChanceInfo si";
Query query = arg0.createQuery(hql);
return query.uniqueResult();
}
集合总数2
String hql = "SELECT COUNT(p.id) from Person AS p WHERE p.uid LIKE ? OR p.name LIKE ?";
Query query = session.createQuery(hql);
List list = query.list();
if (list.size() > 0) {
count = (Integer) list.get(0);
}
return count;
3、通过Criteria实现分页
Criteria criteria = session.createCriteria( Class arg);
criteria.setFirstResult(offset);
criteria.setMaxResults(length);
return criteria.list();