锁定老帖子 主题:一个通用分页查询方法
该帖已经被评为隐藏帖
|
|
---|---|
作者 | 正文 |
发表时间:2009-08-15
myworkfirst 写道 hq 还要自己写分页吗? 都提供了分页机制。
我这里就是利用了分页机制封装了一下,方便下面的程序员调用 也就是说开发人员作查询时只需要编写: PaginationSupport findUser(){ return findPageByQuery("from user",null,20,0); } 返回的是 PaginationSupport,里面封装了分页需要的数据,其中一项就是数据总数 |
|
返回顶楼 | |
发表时间:2009-08-16
findUser 返回的不是 User or Users ?
代码写的 真的不好看 。。 hql分页怎么会封装得如此 。。 为什么同样的回复要submit这么多次 ? |
|
返回顶楼 | |
发表时间:2009-08-16
我举的这个例子findUser返回的是一个PaginationSupport对象,里面封装了总数、数据、开始记录、每页记录数等。可能改称findUserList这样会容易看一些
至于这个代码不好看,现在我想到的只有拆hql语句的办法,开这个贴就是为了把需求提出来探讨一下有哪些更好的方法 |
|
返回顶楼 | |
发表时间:2009-08-16
感觉是把简单的事情复杂化!!!
|
|
返回顶楼 | |
发表时间:2009-08-16
建议lZ看看springside,学习一下SpringSide的分页方法吧.
|
|
返回顶楼 | |
发表时间:2009-08-16
这样的代码懒散的我,没办法看下去了.
|
|
返回顶楼 | |
发表时间:2009-08-16
xugq035 写道 jltest 写道 既然用hql还分解什么hql语句。明明就有现成的方法
可能你没看清我的主题,我的目的是“为了简化开发人员的代码” 也就是说开发人员作查询时只需要编写: PaginationSupport findUser(){ return findPageByQuery("from user",null,20,0); } 就可以了,返回的是 PaginationSupport,里面封装了分页需要的数据,其中一项就是数据总数,所以要求对输入的hql语句作拆分 不得不说还是用criteria api吧 |
|
返回顶楼 | |
发表时间:2009-08-17
这种做法挺好的 呵呵~把分页的变量多封装在一个pages类里边 这一来在页面就要省好多事了~
|
|
返回顶楼 | |
发表时间: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); } |
|
返回顶楼 | |
发表时间:2009-08-17
kjj 写道 感觉是把简单的事情复杂化!!!
这里的封装是复杂了,为的是给其他开发人员方便调用 |
|
返回顶楼 | |