spring与hibernate结合使用getHibernateTemplate分页获取数据总数的问题
spring与hibernate结合,使用setFirstResult()和setMaxResults()分页,publicList<News>findmoreNews(...
spring与hibernate结合,使用
setFirstResult()和setMaxResults()分页,
public List<News> findmoreNews(final int pageSize,final int page) {
try{
final String hql="from News news news.newsno desc";
List listTable= getHibernateTemplate().executeFind(new HibernateCallback(){
public Object doInHibernate(org.hibernate.Session session) throws HibernateException,SQLException{
Query query=session.createQuery(hql);
Criteria count = session.createCriteria(News.class);
query.setFirstResult((page-1)*pageSize+1);//记录开始位置
query.setMaxResults(pageSize);//读取记录数量
List list = query.list();
return list;
}
});
return listTable;
}catch(RuntimeException e){
e.printStackTrace();
throw e;
}
}怎么样获取到数据的总数,从而进行计算总页数,这样获取到的只是setFirstResult()和setMaxResults()之间的数据。或者一次查询一定数量(200条记录)的数据,然后再分页? 展开
setFirstResult()和setMaxResults()分页,
public List<News> findmoreNews(final int pageSize,final int page) {
try{
final String hql="from News news news.newsno desc";
List listTable= getHibernateTemplate().executeFind(new HibernateCallback(){
public Object doInHibernate(org.hibernate.Session session) throws HibernateException,SQLException{
Query query=session.createQuery(hql);
Criteria count = session.createCriteria(News.class);
query.setFirstResult((page-1)*pageSize+1);//记录开始位置
query.setMaxResults(pageSize);//读取记录数量
List list = query.list();
return list;
}
});
return listTable;
}catch(RuntimeException e){
e.printStackTrace();
throw e;
}
}怎么样获取到数据的总数,从而进行计算总页数,这样获取到的只是setFirstResult()和setMaxResults()之间的数据。或者一次查询一定数量(200条记录)的数据,然后再分页? 展开
2个回答
展开全部
楼上梁册说橡掘宏得对,发两句hql,一句分页查询指定数据,另一句查询总条数
假设分页语句已经写好,你可以直接调用散态下面的代码转换成查询总条数:
String totalHql = hql.substring( hql.toLowerCase().indexOf("from"), hql.length());
totalHql = "SELECT COUNT(*) "+totalHql;
假设分页语句已经写好,你可以直接调用散态下面的代码转换成查询总条数:
String totalHql = hql.substring( hql.toLowerCase().indexOf("from"), hql.length());
totalHql = "SELECT COUNT(*) "+totalHql;
更多追问追答
追问
那我返回的数据是什么呢?是总数还是分页指定的数据?
追答
如果你调用你写的那个方法的话肯定是返回分页后的总数。要想获得所有的总数我是这样处理的,如果传入的参数pageSize和pageNo都为0的话,就不运行下面这两句话,这样查询出来的数据就是总数了
if(page!=0&&pageSize!=0){
query.setFirstResult((page-1)*pageSize+1);//记录开始位置
query.setMaxResults(pageSize);//读取记录数量
}
返回的数据类型是一个List,但是只有一条数据(就是总数),你通过list.get(0)获得总数
2011-05-11
展开全部
执行2条sql语句,一条取总数,一条取分页的数据。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询