sql 几种分页方法

来源:互联网 发布:淘宝卖家店铺动态设置 编辑:程序博客网 时间:2024/04/25 18:57

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());}




1 0