亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > 綜合 > 正文

數據庫組件 Hxj.Data

2024-07-21 02:45:12
字體:
來源:轉載
供稿:網友
分頁在前面好幾節中的列子中已經出現,現在在詳細講解一下。

有三種方法去實現:

1、Top(int topCount) 方法

在sqlserver和msaccess中其實就是top , 在Oracle通過rownum實現。



2、From(int startIndex, int endIndex)

從startIndex條到endIndex條之間的記錄數。



3、Page(int pageSize, int pageIndex)

每頁pageSize條,第pageIndex頁



下面就依次對這三個方法舉例說明。



top方法:

Dbsession.Default.From<PRoducts>()
                .Top(10)
                .ToList();該查詢時查詢products表中的前10條記錄,生成的sql語句如下:(如何輸出查看組件生成的sql)

Text: SELECT TOP 10 * FROM [Products]  

from方法:
DbSession.Default.From<Products>()
                .From(3, 8)
                .ToList();查找第3條到第8條的數據(包括第3條和第8條),生成的sql語句如下:

Text: SELECT * FROM ( SELECT TOP 6 * FROM ( SELECT TOP 8 * FROM [Products] ORDER BY [Products].[ProductID] ASC) AS tempIntable ORDER BY [ProductID] DESC) AS tempOuttable ORDER BY [ProductID] ASC  

page方法:
DbSession.Default.From<Products>()
                .Page(10, 2)
                .ToList();查詢每頁10條的第2頁數據,sql語句如下:
Text: SELECT * FROM ( SELECT TOP 10 * FROM ( SELECT TOP 20 * FROM [Products] ORDER BY [Products].[ProductID] ASC) AS tempIntable ORDER BY [ProductID] DESC) AS tempOuttable ORDER BY [ProductID] ASC

可以看出from方法和page方法生成的sql語句是格式是一樣的,其實page方法最終還是調用from方法,
如果from的startIndex參數等于1就會調用top方法來查詢。

默認情況下我們并沒有設置排序,組件則會自動添加一個排序,如果有主鍵則選主鍵排序,不然選一個其他列排序。

當然在很多情況下我們是需要設置哪些列排序的。
例如:
DbSession.Default.From<Products>()
                .Page(10, 2)
                .OrderBy(Products._.UnitPrice.Desc)
                .Where(Products._.CategoryID == 2)
                .ToList();查詢條件是categoryid等于2,按照unitprice倒敘排序,每頁10條的第2頁數據。
生成的sql如下:
Text: SELECT * FROM ( SELECT TOP 2 * FROM [Products] WHERE [Products].[CategoryID] = @bee7551993404c8592f07f9b01710bb5 ORDER BY [Products].[UnitPrice] ASC) AS temp_table ORDER BY [UnitPrice] DESC Parameters: @bee7551993404c8592f07f9b01710bb5[Int32] = 2 這樣的sql語句是不是出乎意料啊,原來符合條件的查詢第二頁只有2條數據,所以查詢的時候就直接unitprice正序top 2就完結了。

我們把條件去掉再看看:
DbSession.Default.From<Products>()
                .Page(10, 2)
                .OrderBy(Products._.UnitPrice.Desc)
                //.Where(Products._.CategoryID == 2)
                .ToList();生成的sql如下:
Text: SELECT * FROM ( SELECT TOP 10 * FROM ( SELECT TOP 20 * FROM [Products] ORDER BY [Products].[UnitPrice] DESC) AS tempIntable ORDER BY [UnitPrice] ASC) AS tempOuttable ORDER BY [UnitPrice] DESC 這樣算是正常的生成格式了。

以上的sql腳本都是在sql server2000下生成的。

其實在查詢過程中組建還會自動查詢了count()符合條件的記錄數,所以在大數據的情況下,效率不會很好。

如果你設置組建的數據庫是sql server2005則不會去查詢 count,而是直接通過row_number()來查詢,來獲得更好的效率。(oracle則是rownum實現)

下面來sql server2005例子:
DbSession.Default.From<Products>()
                .Page(10, 2)
                .OrderBy(Products._.UnitPrice.Desc)
                //.Where(Products._.CategoryID == 2)
                .ToList();代碼還是上面的例子的,生成的sql:
Text: SELECT * FROM ( SELECT *,row_number() over( ORDER BY [Products].[UnitPrice] DESC) AS tmp__rowid FROM [Products] ) AS tmp_table WHERE (tmp__rowid BETWEEN 11 AND 20) 方法的調用還是一樣的,所以如果from的參數startIndex等于1,還是優先使用top,并沒有使用row_numer()。


當然你覺得分頁還不夠理想,可以自己寫sql或者存儲過程。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产成人精品电影久久久| 久久人人爽亚洲精品天堂| 国产丝袜高跟一区| 成人黄色在线免费| 另类色图亚洲色图| 97精品在线观看| 日韩视频精品在线| 国产一区二区av| 国产91精品久久久久久| 欧美美女18p| 欧美性猛交xxxx富婆弯腰| 亚洲精品国产精品自产a区红杏吧| 动漫精品一区二区| 91精品国产色综合久久不卡98口| 国产精品电影观看| 97视频在线观看视频免费视频| 国产精品日韩一区| 日韩精品极品在线观看| 精品久久久久久亚洲国产300| 中文字幕一区日韩电影| 欧美日韩激情视频8区| 国产偷亚洲偷欧美偷精品| 国产精品高潮呻吟久久av无限| 久久久久女教师免费一区| 一本色道久久综合亚洲精品小说| 91精品国产91久久久久久吃药| 日韩亚洲国产中文字幕| 成人444kkkk在线观看| 午夜美女久久久久爽久久| 国产成人在线一区| 欧美二区在线播放| 国外日韩电影在线观看| 中文字幕日韩欧美| 国产精品国产三级国产专播精品人| 色偷偷偷亚洲综合网另类| 日韩视频在线一区| 久久精品久久精品亚洲人| 国产精品白嫩美女在线观看| 日韩av电影免费观看高清| 久久精视频免费在线久久完整在线看| 国产精品久久91| 国产成人精品日本亚洲| 中文字幕久久久av一区| 亚洲精品久久久久久久久久久久久| 亚洲男人天堂九九视频| 国产女人18毛片水18精品| 欧美电影电视剧在线观看| 久久99精品久久久久久青青91| 国产精品亚洲欧美导航| 51精品在线观看| 欧美极品少妇全裸体| 欧美老女人在线视频| 成人在线国产精品| 久久中文久久字幕| 色视频www在线播放国产成人| 日韩激情视频在线播放| 欧美日韩国产中文精品字幕自在自线| 欧美色videos| 国产精品极品在线| 久久99精品久久久久久青青91| 亚洲国产精品久久| 亚洲精品资源美女情侣酒店| 91精品国产91久久久久久| 高跟丝袜欧美一区| 亚洲精品成人av| 欧美日韩综合视频网址| 亚洲va欧美va国产综合久久| 久久99久久久久久久噜噜| 成人夜晚看av| 91爱视频在线| 欧美精品一本久久男人的天堂| 欧美乱妇高清无乱码| 精品国产欧美一区二区五十路| 亚洲三级 欧美三级| 亚洲男人天堂手机在线| 亚洲精品成人免费| 中文字幕在线国产精品| 亚洲欧美一区二区激情| 亚洲欧洲自拍偷拍| 久久久久久中文字幕| 亚洲色图综合网| 性欧美亚洲xxxx乳在线观看| 97在线免费视频| 亚洲欧美999| 九九热99久久久国产盗摄| 日韩视频免费中文字幕| 国产精品久久久久av免费| 国产精品久久久久久久一区探花| 久久久久久com| 亚洲欧美三级在线| 亚洲a在线播放| 欧美一区二区三区免费视| 成人日韩在线电影| 在线视频免费一区二区| 日韩精品极品视频| 亚洲一区二区在线| 欧美激情精品久久久久久大尺度| 国产精品久久久久久久久久东京| 午夜精品国产精品大乳美女| 色琪琪综合男人的天堂aⅴ视频| 色婷婷综合成人av| 精品福利一区二区| 久久久精品一区二区三区| 亚洲精品suv精品一区二区| 国产精国产精品| 激情成人在线视频| 欧美中文字幕精品| 欧美精品18videos性欧美| 国产精品久久久久免费a∨| 黑人巨大精品欧美一区二区三区| 国产亚洲精品久久久优势| 欧美成人午夜激情| 国产精品激情av电影在线观看| 亚洲日韩中文字幕在线播放| 国产精品69av| 久久久亚洲网站| 亚洲丝袜在线视频| 国产一区二区精品丝袜| 国产一区二区三区三区在线观看| 91九色在线视频| 91久久在线观看| 亚洲国产成人精品久久久国产成人一区| 亚洲嫩模很污视频| 亚洲欧美日韩一区二区在线| 亚洲人成伊人成综合网久久久| 久久亚洲欧美日韩精品专区| 亚洲精品国产精品国自产在线| 成人激情视频免费在线| 另类图片亚洲另类| 国产精品免费一区二区三区都可以| 欧美激情视频一区二区三区不卡| 97精品视频在线播放| 亚洲最新在线视频| 一本久久综合亚洲鲁鲁| 国产成人精品久久二区二区91| 性视频1819p久久| 亚洲第一精品电影| 伦伦影院午夜日韩欧美限制| 日韩国产精品视频| 66m—66摸成人免费视频| 国产精品2018| 亚洲国产精品va在线看黑人动漫| 久久国产精彩视频| 欧美性在线视频| 亚洲精品乱码久久久久久金桔影视| 欧美肥老妇视频| 91九色蝌蚪国产| 久久久久国产精品免费| 色妞久久福利网| 亚洲人成啪啪网站| 国产一区二区三区在线观看网站| 日本精品久久电影| 色无极影院亚洲| 日韩中文字幕在线播放| www.日韩系列| 亚洲精品动漫久久久久| 亚洲人成77777在线观看网| 国产精品丝袜久久久久久不卡| 国产精品激情av电影在线观看| 亚洲四色影视在线观看| 国产精品天天狠天天看| 一区二区三区天堂av| 久久露脸国产精品| 久青草国产97香蕉在线视频|