通过hibernate使用HQL可以很简单的实现数据库分页
/**
* commentFlag 分页依据
* currentFlag 要取出的页码
* lineSize 每页数据量
*/
public List<Question> queryByCommentFlag(int commentFlag, int currentFlag,
int lineSize) throws Exception{
List<Question> all;
String hql = "from Question as q where q.commentflag = ? order by q.questiontime desc";
Query query = sessionFactory.getCurrentSession().createQuery(hql);
query.setInteger(0, commentFlag);
query.setFirstResult((currentFlag-1)*lineSize);
query.setMaxResults(lineSize);
all = query.list();
return all;
}
根据questiontime逆序排列,取出符合commentflag取值的数据,然后从第((currentFlag-1)*lineSize条数据开始,取出lineSize条数据,组成列表返回。
返回的all就是分页后的第currentFlag页数据,其中每页有lineSize条数据。
关键代码:
//设置起始位置
query.setFirstResult((currentFlag-1)*lineSize);
//设置取值数量
query.setMaxResults(lineSize);