Hibernate的findAll语句可查询出全部记录,count函数可以查出全部记录的总数,查两次效率低,有好方法吗?
Hibernate的hql分页查询问题,findAll语句可以查询的全部分页记录,count函数可以查出全部记录的总数!但是,当我想同时获得两个结果的时候,就要调用dao...
Hibernate的hql分页查询问题,findAll语句可以查询的全部分页记录,count函数可以查出全部记录的总数!但是,当我想同时获得两个结果的时候,就要调用dao方法两次,有什么一劳永逸的方法,只是查询dao的分页,就可以获得全部记录的总数?hibernate的缓存机制可以吗?
展开
2个回答
展开全部
先一个page类
public class Page<T> {
/** 分页数据 * */
private List<T> records;
private int start;
private int limit;
/** 总记录数 * */
private int totalRecord;
public Page(int start, int limit) {
super();
this.start = start;
this.limit = limit;
}
}//get set 略
然后分页的时候是这样写地
public Page statisticsDept(Integer start ,Integer limit) {
final Integer fin_start = start;
final Integer fin_limit = limit;
final String sqlContext = "xxxx";
Page page =new Page();
page.setRecords((List)super.getHibernateTemplate().execute(new HibernateCallback() {
public Object doInHibernate(Session session) {
Query query = session.createSQLQuery(sqlContext);
query.setFirstResult(fin_start);
query.setMaxResults(fin_limit);
return query.list();
}
}
));
page.setTotalRecord(this.statisticsDept());
return page;
}
public class Page<T> {
/** 分页数据 * */
private List<T> records;
private int start;
private int limit;
/** 总记录数 * */
private int totalRecord;
public Page(int start, int limit) {
super();
this.start = start;
this.limit = limit;
}
}//get set 略
然后分页的时候是这样写地
public Page statisticsDept(Integer start ,Integer limit) {
final Integer fin_start = start;
final Integer fin_limit = limit;
final String sqlContext = "xxxx";
Page page =new Page();
page.setRecords((List)super.getHibernateTemplate().execute(new HibernateCallback() {
public Object doInHibernate(Session session) {
Query query = session.createSQLQuery(sqlContext);
query.setFirstResult(fin_start);
query.setMaxResults(fin_limit);
return query.list();
}
}
));
page.setTotalRecord(this.statisticsDept());
return page;
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询