国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
JavaWorld@TW - Re:大家是否可以提供 寫分頁的方式~
之前曾把 Hibernate 2.1.4 net.sf.hibernate.dialect package 中,支援之 Paged Queries 整理出來, post 在 Using Paged Queries in Variant RDBMS,

這裡僅整理 Hibernate 2.1.4 使用之 SQL,供有需要的朋友參考:

分頁查詢語法
假設(shè)有個學(xué)生資料的 table 叫 student{id(PK), name, score},
若想依分?jǐn)?shù)高低取出所有資料,我們會這麼下 SQL statement,
SELECT * FROM student ORDER BY score DESC
但是,若想取出
1. 分?jǐn)?shù)排名在前 10 名的學(xué)生資料,
2. 分?jǐn)?shù)排名在第 11 名至第 20 名間的學(xué)生資料,

在各個 DBMS 中,我們應(yīng)如何下該 SQL 指令?
透過下面程式:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import java.io.File;            import net.sf.hibernate.dialect.*;                         public class HibernatePagingQueries {                         private static final String _package        = "net.sf.hibernate.dialect.";            private static final String _querySelect    = "SELECT * FROM STUDENT ORDER BY SCORE";            private static final int    _limit          = 10;                         private HibernatePagingQueries() { }                         private void checkLimitSupported(String dbDialect) {            try {            Dialect dialect = (Dialect)Class.forName(_package + dbDialect).newInstance();                         String myDbName = dbDialect.substring(0, dbDialect.indexOf("Dialect"));            System.out.println(myDbName);            if (dialect.supportsLimit()) {            System.out.println("\t" + dialect.getLimitString(_querySelect, false, _limit));            System.out.println("\t" + dialect.getLimitString(_querySelect, true,  _limit));            System.out.println("\t" + dialect.getLimitString(_querySelect, false));            System.out.println("\t" + dialect.getLimitString(_querySelect, true));            } else {            System.out.println("\t" + myDbName + " paged queries not supported");            }                         } catch (ClassNotFoundException e) {            System.out.println("ClassNotFoundException Occured when fileName = " + dbDialect);            } catch (InstantiationException e) {            System.out.println("InstantiationException Occured when fileName = " + dbDialect);            } catch (IllegalAccessException e) {            System.out.println("IllegalAccessException Occured when fileName = " + dbDialect);            } catch (UnsupportedOperationException e) {            System.out.println("UnsupportedOperationException Occured when fileName = " + dbDialect);            }            }                         public static void main(String[] args) {            HibernatePagingQueries pagingqueries = new HibernatePagingQueries();            String srcDirectory = "C:/hibernate-2.1/src/net/sf/hibernate/dialect";            String[] files = new File(srcDirectory).list();                         for (int i = 0, len = files.length; i < len; i++) {            if (!files[i].endsWith("Dialect.java")) {            continue;            }            if (files[i].equals("Dialect.java")) { // IllegalAccessException, abstract class            continue;            }                         String fileName = files[i].substring(0, files[i].lastIndexOf("."));            pagingqueries.checkLimitSupported(fileName);                         }            }                         }            


可以得到下面的 SQL statement
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
DB2            1.1. SELECT * FROM STUDENT ORDER BY SCORE DESC fetch first 10 rows only            1.2. select * from ( SELECT rownumber() over(ORDER BY SCORE DESC) as row_, * FROM STUDENT ORDER BY SCORE DESC ) as temp_ where row_ <= 10            2.   select * from ( SELECT rownumber() over(ORDER BY SCORE DESC) as row_, * FROM STUDENT ORDER BY SCORE DESC ) as temp_ where row_ between 11 and 20                         Firebird            1. SELECT first 10 * FROM student ORDER BY score DESC            2. SELECT first 10 SKIP 10 * FROM student ORDER BY score DESC                         HypersonicSQL(HSQL)            1. SELECT TOP 10 * FROM student ORDER BY score DESC            2. SELECT LIMIT 10 10 FROM student ORDER BY score DESC                         Interbase            1. SELECT * FROM student ORDER BY score DESC ROWS 10            2. SELECT * FROM student ORDER BY score DESC ROWS 10 TO 10                         MySQL            1. SELECT * FROM student ORDER BY score DESC LIMIT 10            2. SELECT * FROM student ORDER BY score DESC LIMIT 10, 10                         Oracle            1. select * from ( SELECT * FROM STUDENT ORDER BY SCORE DESC ) where rownum <= 10            2. select * from ( select row_.*, rownum rownum_ from ( SELECT * FROM STUDENT ORDER BY SCORE DESC ) row_ where rownum <= 10) where rownum_ > 20                         PostgreSQL            1. SELECT * FROM student ORDER BY score DESC limit 10            2. SELECT * FROM student ORDER BY score DESC limit 10 OFFSET 10                         SQLServer            1. SELECT top 10 * FROM STUDENT ORDER BY SCORE DESC                         paged queries not supported            FrontBase, Informix, Ingres, Mckoi, NoArgSQL, Pointbase, Progress, SAPDB, StandardSQL, Sysbase            


HibernatePagingQueries.java (2.47k)


本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Hive SQL50道練習(xí)題
SQL基礎(chǔ)入門:第7課:查詢數(shù)據(jù)
mysql三表查詢分組后取每組最大值,mysql面試題。
《數(shù)據(jù)庫》實驗報告1
Hibernate統(tǒng)計查詢手記
Mysql查詢語句進階知識集錦
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服