浏览 4646 次
锁定老帖子 主题:有关查询生成与分页
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2003-12-30
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2003-12-30
引用 但是如果自动生成的话,如果查询出的结果需要分页 看不懂 |
|
返回顶楼 | |
发表时间:2003-12-31
yehs220 写道 引用 但是如果自动生成的话,如果查询出的结果需要分页 看不懂 我想他的意思是说在程序里面用session.find查找觉得比较方便,但find不能分页,不得不用query,有何通用的solution。 |
|
返回顶楼 | |
发表时间:2003-12-31
对对对,就是这个意思,也就是说使用session.find有没办法 能分页 也许问的复杂了一点
|
|
返回顶楼 | |
发表时间:2003-12-31
那就用Query好了,或者自己写个工具封装一下。
|
|
返回顶楼 | |
发表时间:2004-01-03
query中不容易做封装呀,有什么思路吗?
|
|
返回顶楼 | |
发表时间:2004-01-05
我用query查询,速度还蛮不错啊。
public class Page { /*页面大小*/ private int pageSize=2; /*开始页*/ private int beginStartPage=1; /*记录总数*/ private long recordCount=0; /*页数*/ private int pageCount=0; /*结果对象*/ private Iterator result; public Page(); { } /** * @return */ public int getBeginStartPage(); { return beginStartPage; } /** * @return */ public int getPageSize(); { return pageSize; } /** * @return */ public long getRecordCount(); { return recordCount; } /** * @return */ public Iterator getResult(); { return result; } /** * @param i */ public void setBeginStartPage(int i); { beginStartPage = i; } /** * @param i */ public void setPageSize(int i); { pageSize = i; } /** * @param l */ public void setRecordCount(long l); { recordCount = l; } /** * @param iterator */ public void setResult(Iterator iterator); { result = iterator; } /** * 根据记录总数得到页数 * @param rscount */ public void setPageCountByRS();{ int the_yu = (int); (this.recordCount % this.pageSize);; if(the_yu==0);{ setPageCount((int); (this.recordCount/this.pageSize););; }else{ setPageCount((int);((this.recordCount-the_yu);/this.pageSize+1););; } } /** * @return */ public int getPageCount(); { return pageCount; } /** * @param i */ public void setPageCount(int i); { pageCount = i; } } public class CommonDAOImpl extends BaseMap implements CommonDAO { /** * @see com.lenovo.spforum.dao.CommonDAO#getRsCount(java.lang.String); */ public int getRsCount(String sqlstr); throws HibernateException, NamingException { // TODO Auto-generated method stub Session ss=beginSession();; int result=((Integer); ss.iterate(sqlstr);.next(););.intValue();; endSession();; return result; } } /** * 根据类别ID分页显示该类别下的所有论坛 * @param page * @param categoryID * @return * @throws HibernateException * @throws NamingException */ public Page listByCategory(Page page,Long categoryID);throws HibernateException,NamingException{ Session session=beginTransaction();; Iterator itr=null; String queryString="from ForumPO as forum where forum.categoryID="+categoryID; Query query = session.createQuery(queryString);; if(page.getRecordCount();<=0);{ CommonDAO commondao=DAOFactory.getInstance();.getCommonDAO();; String countRS="select count(*); from ForumPO as forum where forum.categoryID= "+categoryID; page.setPageSize(2);; page.setRecordCount(commondao.getRsCount(countRS););;//得到总记录数 page.setPageCountByRS();;//根据记录总数和页大小得到可以分多少页 } //query.scroll();; query.setFirstResult((page.getBeginStartPage();-1);*page.getPageSize(););; //query.setMaxResults(page.getBeginStartPage();*page.getPageSize(););; query.setMaxResults(page.getPageSize(););; itr = query.iterate();; page.setResult(itr);; //ss.close();; return page; } 哈哈,yehs220 我们两个的图标一样 ^_^ |
|
返回顶楼 | |