SSH初體驗系列--Hibernate--3--單值與分頁查詢

前言

  查詢能夠按結果集分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

相關文章
相關標籤/搜索