论坛首页 Java企业应用论坛

一个通用分页查询方法

浏览 8163 次
该帖已经被评为隐藏帖
作者 正文
   发表时间:2009-08-15  
myworkfirst 写道
  hq 还要自己写分页吗? 都提供了分页机制。


我这里就是利用了分页机制封装了一下,方便下面的程序员调用

也就是说开发人员作查询时只需要编写:
PaginationSupport findUser(){
  return findPageByQuery("from user",null,20,0);
}
返回的是 PaginationSupport,里面封装了分页需要的数据,其中一项就是数据总数
0 请登录后投票
   发表时间:2009-08-16  
findUser 返回的不是 User or Users ?

代码写的 真的不好看 。。

hql分页怎么会封装得如此 。。

为什么同样的回复要submit这么多次 ?
0 请登录后投票
   发表时间:2009-08-16  
我举的这个例子findUser返回的是一个PaginationSupport对象,里面封装了总数、数据、开始记录、每页记录数等。可能改称findUserList这样会容易看一些
至于这个代码不好看,现在我想到的只有拆hql语句的办法,开这个贴就是为了把需求提出来探讨一下有哪些更好的方法
0 请登录后投票
   发表时间:2009-08-16  
感觉是把简单的事情复杂化!!!
0 请登录后投票
   发表时间:2009-08-16  
建议lZ看看springside,学习一下SpringSide的分页方法吧.
0 请登录后投票
   发表时间:2009-08-16  
这样的代码懒散的我,没办法看下去了.
0 请登录后投票
   发表时间:2009-08-16  
xugq035 写道
jltest 写道
既然用hql还分解什么hql语句。明明就有现成的方法


可能你没看清我的主题,我的目的是“为了简化开发人员的代码”

也就是说开发人员作查询时只需要编写:
PaginationSupport findUser(){
  return findPageByQuery("from user",null,20,0);
}

就可以了,返回的是 PaginationSupport,里面封装了分页需要的数据,其中一项就是数据总数,所以要求对输入的hql语句作拆分

不得不说还是用criteria api吧
0 请登录后投票
   发表时间:2009-08-17  
   这种做法挺好的 呵呵~把分页的变量多封装在一个pages类里边  这一来在页面就要省好多事了~
0 请登录后投票
   发表时间:2009-08-17  
grave 写道
xugq035 写道
jltest 写道
既然用hql还分解什么hql语句。明明就有现成的方法


可能你没看清我的主题,我的目的是“为了简化开发人员的代码”

也就是说开发人员作查询时只需要编写:
PaginationSupport findUser(){
  return findPageByQuery("from user",null,20,0);
}

就可以了,返回的是 PaginationSupport,里面封装了分页需要的数据,其中一项就是数据总数,所以要求对输入的hql语句作拆分

不得不说还是用criteria api吧


criteria我也封装了一个,这个处理好点,用rowCount()).uniqueResult()即可得到总数

	public PaginationSupport findPageByCriteria(
			final DetachedCriteria detachedCriteria, final int pageSize,
			final int startIndex) {
		return (PaginationSupport) getHibernateTemplate().execute(
				new HibernateCallback() {
					public Object doInHibernate(Session session)
							throws HibernateException {
						Criteria criteria = detachedCriteria
								.getExecutableCriteria(session);
						int totalCount = ((Integer) criteria.setProjection(
								Projections.rowCount()).uniqueResult())
								.intValue();
						criteria.setProjection(null);
						List items = criteria.setFirstResult(startIndex)
								.setMaxResults(pageSize).list();
						PaginationSupport ps = new PaginationSupport(items,
								totalCount, pageSize, startIndex);
						return ps;
					}
				}, true);
	}
0 请登录后投票
   发表时间:2009-08-17  
kjj 写道
感觉是把简单的事情复杂化!!!


这里的封装是复杂了,为的是给其他开发人员方便调用
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics