HibernateDaoSupport分页方法

①HibernateDaoSupport分页功能主要使用的方法是:setFirstResult和setMaxResults,西面是一个简单的例子/***按HQL分页查询*... ①HibernateDaoSupport分页功能
主要使用的方法是:setFirstResult和setMaxResults,西面是一个简单的例子
/**
* 按HQL分页查询
*
* @param firstResult
* 开始记录号
* @param maxResults
* 最大记录数
* @param hql
* 查询语句,支持连接查询和多条件查询
* @param params
* 参数数组,代替餐hql中的"?"号
* @return 封装List和total的Pager对象
*/
@SuppressWarnings("unchecked")
public PageModel<T> findForPagerByHql(final int firstResult,
final int maxResults, final String hql, final Object[] params) {
PageModel<T> pager = (PageModel<T>) getHibernateTemplate().execute(
new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Query query = session.createQuery(hql);
for (int position = 0; position < params.length; position++) {
query.setParameter(position, params[position]);
}
int totalCounts = query.list().size(); // 总记录数
// 用于分页查询
if (maxResults > 0) {
query.setFirstResult(firstResult);
query.setMaxResults(maxResults);
}
List<T> list = query.list();
PageModel<T> pageModel = new PageModel<T>();
pageModel.setPageNo(firstResult);
pageModel.setPageSize(maxResults);
pageModel.setTotalRecords(totalCounts);
pageModel.setList(list);
return pageModel;
}
});
return pager;
}

②spring的HibernateDaoSupport和Hihernate的session那个很好?他们之间只是封装有所不同,建议你可以分别阅读以下二者的源码,你读完后会发现,你可以自己写出来!
PS:good luck!如果问题可留言或百度Hi我!~赞同4| 评论
给个pageModel的内容和HibernateDaoSupport
public PageModel<T> findForPagerByHql(final int firstResult,
final int maxResults, final String hql, final Object[] params) {}
PageModel不是一个类么,只是写不到好的。
你们帮我写个,。。,
展开
 我来答
匿名用户
2012-10-11
展开全部
这个分页方法希望能帮到你
@SuppressWarnings("unchecked")
protected List executeQuery(Pager pager, String hql, Object... values) {
Query query = getSession().createQuery(hql);
for (int i = 0; values != null && i < values.length; i++) {
query.setParameter(i, values[i]);
}
if(pager != null){
query.setFirstResult((pager.getCurrentPage() - 1) * pager.getPageSize());
query.setMaxResults(pager.getPageSize());
}
return query.list();
}

protected Long executeCount(String hql, Object... values) {
Query query = getSession().createQuery("select count(*) " + hql);
for (int i = 0; values != null && i < values.length; i++) {
query.setParameter(i, values[i]);
}
return (Long)query.list().get(0);
}
百度网友ffb545e
2012-10-11 · TA获得超过200个赞
知道答主
回答量:264
采纳率:0%
帮助的人:107万
展开全部
恩???
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式