/**
* 执行返回指定条数的 HQL
*
* @author zhujie
* @param hql
* 执行的 HQL
* @param currentPage
* 开始页
* @param pageSize
* 返回的条数
* 执行返回指定条数的 HQL
*
* @author zhujie
* @param hql
* 执行的 HQL
* @param currentPage
* 开始页
* @param pageSize
* 返回的条数
* @return
*/
public List executeQueryHql(final String hql, final int currentPage,
final int pageSize) {
return (List) this.getHibernateTemplate().executeFind(
new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Query query = session.createQuery(hql);
if (currentPage == 0 && pageSize == 0) {
return query.list();
}
if (currentPage > 0)
query.setFirstResult((currentPage - 1) * pageSize);
if (pageSize > 0)
query.setMaxResults(pageSize);
*/
public List executeQueryHql(final String hql, final int currentPage,
final int pageSize) {
return (List) this.getHibernateTemplate().executeFind(
new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Query query = session.createQuery(hql);
if (currentPage == 0 && pageSize == 0) {
return query.list();
}
if (currentPage > 0)
query.setFirstResult((currentPage - 1) * pageSize);
if (pageSize > 0)
query.setMaxResults(pageSize);
return query.list();
}
});
}
}
});
}
public PageModel findAllItem(final int pageNo, final int pageSize, final String queryStr) {
PageModel pageModel = null;
List itemList = new ArrayList();
try {
if (queryStr != null && queryStr.trim().length() != 0) {
itemList = this.getHibernateTemplate().executeFind(new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
return session.createQuery("from Item a where a.itemNo like ? or a.itemName like ? order by a.itemNo")
.setParameter(0, queryStr + "%")
.setParameter(1, queryStr + "%")
.setFirstResult((pageNo - 1) * pageSize)
.setMaxResults(pageSize)
.list();
}
});
}else {
itemList = this.getHibernateTemplate().executeFind(new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
return session.createQuery("select a from Item a join fetch a.category b join fetch a.unit c order by a.itemNo")
.setFirstResult((pageNo - 1) * pageSize)//从第0条开始
.setMaxResults(pageSize)//显示多少天
.list();
}
});
}
pageModel = new PageModel();
pageModel.setPageNo(pageNo);
pageModel.setPageSize(pageSize);
pageModel.setList(itemList);
pageModel.setTotalRecords(getTotalRecords(queryStr));
}catch(Exception e) {
//记录日志,log4j等......
e.printStackTrace();
throw new AppException("drp.database.item.error.findallitem");
}
return pageModel;
}
private int getTotalRecords(String queryStr) {
Long totalRecords = 0L;
if (queryStr != null && queryStr.trim().length() != 0) {
//采用模板取得总记录数据
totalRecords = (Long)this.getHibernateTemplate().find("select count(*) from Item a where a.itemNo like ? or a.itemName like ?",
new Object[]{queryStr + "%", queryStr + "%"}).get(0);
}else {
//采用session取得总记录数
totalRecords = (Long)this.getSession().createQuery("select count(*) from Item a").uniqueResult();
}
return totalRecords.intValue();
}