HQL自己設定表示レコード数

1420 ワード

今日、実験プロジェクトをする时、前にいくつかのモジュールの机能を実现しましたが、すべてのモジュールのデータを见るには、すべてのactionに提出して、そのactionのresultページにジャンプして、少し面倒な感じがして、多くのウェブサイトのシステムはトップページに各种のデータを表示しなければなりません.见て分からないで、だから自分で直接システムのプラットフォームに登录する时各种のデータを探して、トップページの空间が限られているため、各モジュールのデータは普通10-20条ぐらいしか表示しないで、このように10-20条の记录を探すだけで、多く言わないで、直接コードを见ます:
主にページング検索を使用します.
トップページに表示されているのは一般的に最新のデータが必要なので、並べ替えなくても直接
query.setFirstResult(first); query.setMaxResults(allRow);
ここではallrowがすべてのレコード数、firstが検索を開始する場所、allrowから検索するエントリ数を減算するとfirstになります.
次はコードです
	@Override
	public List listTop10(final String queryString,final int num) {
		// TODO Auto-generated method stub
		try{
			return (List) getHibernateTemplate().executeFind(new HibernateCallback(){
				public Object doInHibernate(Session s) throws HibernateException, SQLException{ 
					//     
					int allRow=getAllRowCount(queryString);
					//  
					int first=0;
					if(allRow>num){
						first=allRow-num;
					}
					Query query=s.createQuery(queryString);
					query.setFirstResult(first);
					query.setMaxResults(allRow);
					List list= query.list();
					
					System.out.println("    ");
					
					return list;
				}
			});
		}catch (RuntimeException re){System.out.println("    ");throw re;}
	}

	@Override
	public int getAllRowCount(String hql) {
		// TODO Auto-generated method stub
		 return getHibernateTemplate().find(hql).size(); 
	}