action层,传入page参数
public String findApplication(){
Page page = new Page();
page.setStart(this.getStart());
page.setLimit(this.getLimit());
List results = service.findApplication(application, page);
String json = this.listToGridJoson(page, results);
this.setJsonStr(json);
return SUCCESS;
}
home层,处理方式。
1.截取
if (null != page) {
page.setTotalCount(count(sbf.toString()));
query.setMaxResults(page.getLimit());
query.setFirstResult(page.getStart());
}
private Integer count(String hql){
int index = hql.indexOf("FROM");
hql = hql.substring(index);
StringBuilder countHql = new StringBuilder("SELECT COUNT(*) ");
countHql.append(hql);
Query query = sessionFactory.getCurrentSession().createQuery(countHql.toString());
List result = query.list();
Long count = (Long)result.get(0);
return count.intValue();
}
2.直接计数
String sqlcount = "SELECT COUNT(*) from (select DISTINCT supplier as \"supplier\" from SUPPLIER_MANAGEMENT)";
String a = sessionFactory.getCurrentSession().createSQLQuery(sqlcount).list().get(0).toString();
int dcount = Integer.parseInt(a);
if (null != page)
{
page.setTotalCount(dcount);
query.setMaxResults(page.getLimit());
query.setFirstResult(page.getStart());
}