分页查询比较复杂,以下使用hibernate代码进行演示。如果使用纯sql,操作过程会更繁杂。 ```java public PageBean searchByHQL(final String hql, final Object para[], final int page,final int pageSize) { String str = hql; int index = str.indexOf("order by"); if (index != -1) str = str.substring(0, index); //从原hql语句中截除掉order by index = str.indexOf("from"); if (index != -1) str = str.substring(index); //以下使用hibernate,根据传入的参数组para,生成sql语句,获取总条目数 List allNumList = hibernateTemplate .find("select count(*) " + str, para); //总条目数 int allNum = Integer.parseInt(allNumList.get(0).toString()); final int maxResult = pageSize; //查询结果列表 List allList = (List) hibernateTemplate .execute(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException, SQLException { Query q = session.createQuery(hql); q.setFirstResult((page - 1) * maxResult); q.setMaxResults(maxResult); if (para != null) { for (int i = 0; i < para.length; i++) { q.setParameter(i, para[i]); } } return q.list(); } }); int allPage = 0; int temp = allNum; if (allNum % maxResult == 0) allPage = allNum / maxResult; else allPage = allNum / maxResult + 1; //将查询结果封装到pagebean中 PageBean pageBean = new PageBean(temp, allPage, page, allList, maxResult); return pageBean; } ``` 还有各种其他语言,不再举例,其流程和java相差不大。