论坛首页 Java企业应用论坛

有关查询生成与分页

浏览 4646 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2003-12-30  
现在的查询生成在网上使用的是session.find,因为它的参数后两个是数组,但是如果自动生成的话,如果查询出的结果需要分页,哪么大家都会使用query类来操作。有没人在这块有什么好的办法?
   发表时间:2003-12-30  
引用

但是如果自动生成的话,如果查询出的结果需要分页

看不懂
0 请登录后投票
   发表时间:2003-12-31  
yehs220 写道
引用

但是如果自动生成的话,如果查询出的结果需要分页

看不懂


我想他的意思是说在程序里面用session.find查找觉得比较方便,但find不能分页,不得不用query,有何通用的solution。
0 请登录后投票
   发表时间:2003-12-31  
对对对,就是这个意思,也就是说使用session.find有没办法 能分页 也许问的复杂了一点
0 请登录后投票
   发表时间:2003-12-31  
那就用Query好了,或者自己写个工具封装一下。
0 请登录后投票
   发表时间:2004-01-03  
query中不容易做封装呀,有什么思路吗?
0 请登录后投票
   发表时间: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
我们两个的图标一样 ^_^
0 请登录后投票
论坛首页 Java企业应用版

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