MySQL转HTTP接口(27)-支持文档
分页查询比较复杂,以下使用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相差不大。