查詢能夠按結果集分2類:單個結果 和 數組 ; 其中,返回數組,在這個 數據庫數據量隨隨便便就能上幾十萬的互聯網時代大背景下,經常須要作分頁處理, 因此這裏就說一下單值和分頁, 算是對上一篇"curd"的一些延伸java
好比,咱們須要查詢數據庫,統計一下app的當前註冊人數, 此時咱們知道返回結果一定是"單行單列"的一個數值,那麼能夠用這種單值查詢方式;數據庫
使用uniqueResult()方法,它返回一個java.lang.Object對象,而且能保證返回的必定是一個單值對象,不然就會報錯;若是返回0個對象,也會報錯;因此咱們須要放到try-catch塊中數組
Session session=null; try{ session= HibernateUtil.openSession(); String hql="select count(*) from Feedback"; long count= (long) session.createQuery(hql).uniqueResult(); System.out.println("get data ok"); }catch(Exception e){ e.printStackTrace(); throw new RuntimeException(e); }finally { session.close(); }
在這個互聯網時代,動輒幾十萬的數據也是很是日常的事情了,每次查詢所有加載是很不現實的。所以,作分頁查詢,不只節省db性能,帶寬,流暢度上來了還能提高用戶體驗.session
hibernate的Query類下有兩個方法能夠幫咱們達到分頁查詢目的:setFirstResult(int num)和setMaxResults(int size); 前者的num是查詢的起始記錄數,好比從第3條開始查詢,就是setFirstResult(3); 後者的size是查詢結果集的大小,好比獲取10條記錄,那就是setMaxResults(10);app
//分頁查詢 String hql="from Feedback order by id desc"; List<Feedback> feedbacks=session.createQuery(hql).setFirstResult(1).setMaxResults(2).list();
其中: setFirstResult(int num)的num仍舊是由0開始的;性能
因而,配合着pageIndex,pageCount,很容易就能夠獲得分頁請求代碼,在上面代碼的基礎上修改一下就行:spa
//分頁查詢 String hql="from Feedback order by id desc"; int pageIndex=2,pageCount=10; List<Feedback> feedbacks=session.createQuery(hql).setFirstResult((pageIndex-1)*pageCount).setMaxResults(pageCount).list();
本文版權歸做者和博客園共有,歡迎轉載,但未經做者贊成必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接,不然保留追究法律責任的權利;hibernate
本文出自:博客園--別問是誰code