nhibernate的分頁方法

2022-08-27 00:09:17 字數 1345 閱讀 9014

在使用nhibernate的時候,想用來實現乙個較簡單的分頁。

tmessage 表結構如下

在default.cs中寫了乙個函式loadmessages()

private void loadmessages()

currentpage = page;

if (page > 1)

", page - 1);

}

else

lbtnnextpage.postbackurl = string.format("default.aspx?page=", page + 1);

//根據當前頁填寫《前頁》《後頁》

helper = new nhibernatehelper();

session = helper.getsession();

ilistml = session.createquery("from message order by createtime desc").

.setfirstresult((page-1) * pagesize)

.setmaxresults(pagesize)

.list();

rptmessages.datasource = ml;

rptmessages.databind();

}lbtnprevpage, lbtnnextpage為頁面上的【前頁】、【後頁】的相關圖示。

關鍵的是這一行

ilistml = session.createquery("from message order by createtime desc").

.setfirstresult((page-1) * pagesize)

.setmaxresults(pagesize)

.list();

iquery介面的.setfirstresult, .setmaxresults為兩個重要方法,setfirstresult即指定結果集中開始行數,如為第1頁,則開始行應該為0,如為第2頁,則開始行應為 (2-1) * 每頁記錄數。setmaxresults指定返回的結果的行數,即每頁記錄數。

執行效率

nhibernate執行為延遲執行,即在呼叫這兩個方法後,會自動組合最優sql,進行分頁,因此執行起來的效率還不算太低,我的這個表中記錄大概為15000行,第一次返回時的結果為1751ms,以後每次則只需要40-80ms之間。

NHibernate中的分頁

如些獲得分頁的資料,應是nhibernate中常用的方法 cri.setfirstresult 20 cri.setmaxresults 10 ilist list cri.list list變數就得到某一頁的資料,上面是第20頁 從0計起 的資料。看了一其執行的sql語句 nhibernate s...

NHibernate分頁獲取,通用條件查詢方法

解決問題 解決ui上使用nhibernate通用查詢方法 僅適用於多個條件聯合查詢 第一步 在ui層建立構造條件方法 private ilistgetcondition string customername string address if string.isnullorempty addres...

NHibernate分頁獲取,通用條件查詢方法

解決問題 解決ui上使用nhibernate通用查詢方法 僅適用於多個條件聯合查詢 第一步 在ui層建立構造條件方法 private ilistgetcondition string customername string address if string.isnullorempty addres...