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不是一个类么,只是写不到好的。
你们帮我写个,。。, 展开
主要使用的方法是: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不是一个类么,只是写不到好的。
你们帮我写个,。。, 展开
2个回答
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);
}
@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);
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询