Hiberante分頁,頁數統計

今天做Extjs分頁時,發現原來框架基於MSSQL的,打印處於舉發現爲利用select top 進行分頁,而在mysql中使用

select * from table limit ?,?.

在網上進行查詢這事Hibernate爲了實現統一分頁接口而在方言中進行封裝.Oracle中通過Rownum是實現。

個人認爲可以在MSSQl 2005以上版本利用 ROW_NUMBER()可進行“真分頁”。

再用uniqueResult做分頁統計是,注意結果集只能唯一,否則報錯,查看源碼後發現

static Object uniqueElement(List list) throws NonUniqueResultException {
        int size = list.size();
        if (size==0) return null;
        Object first = list.get(0);
        for ( int i=1; i<size; i++ ) {
            if ( list.get(i)!=first ) {
                throw new NonUniqueResultException( list.size() );
            }

        }
        return first;
    }

只要結果集不唯一則拋異常,但是結果集的數量以一定唯一,特此mark.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章