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

首頁 > 學院 > 開發設計 > 正文

在java中實現sql的select函數功能

2019-11-18 13:36:58
字體:
來源:轉載
供稿:網友

  在java中實現sql的select函數功能
――通過簡單的機制實現對象數組或集合的選擇,過濾,和排序

David RapPOPOrt

摘要

在“filter collections”中,David Rappoport 講述了一個過濾集合對象的簡單方法。在本文中,他擴展了自己的思想,并展示了怎樣實現,如同用sql的select處理關系數據庫中的表一樣,處理對象數組或集合。他描述了用于選擇,過濾,排序隊形數組或集合的通用機制。通過這種機制,可以在java的對象數組或集合上實現sql的select函數功能。(2004-11-22)。



假設你希望以表格的形式,如行列的形式,顯示數組或集合中的數據,并且希望可以選擇顯示的屬性。另外,你還希望只顯示滿足一定條件的數據子集,希望用自定義先后順序的的排序標準對數據排序。

這種類型的功能是sql的select函數提供的:在sql語句中,可以定義數據源(通過from指定);可以定義返回的屬性(通過在select后面指定返回列);可以添加條件(where子句);并且可以定義數據顯示的順序(order by子句)。

本文講述了一些使你能把這些函數使用在任何類型的對象數組和集合上的類和接口。為了實現這些函數功能,機制描述使用了一些設計模式。本文提出的方法有一下一些好處:

1。通過本文的代碼(可以下載。。。),你可以在不影響原始數據的前提下,以不同的方式顯示數據。

2。排序,過濾和選擇制定的屬性十分簡單,并且結果能很快得到。

3。通過這些類和接口,你可以獨立的考慮select語句的各部分,從而可以產生純凈,可復用,可擴展的代碼。

但是,你可能也會猜到,機制使用的是通用接口,假如你沒有很好的理解它,可能會濫用它。

機制的類和接口

下面的列表給出了我們需要的類和接口的簡短說明。后文中,你將看到他們怎么協作,實現設計的功能。每一個類和接口都非常簡單,只含有一個到兩個函數。

1.接口Invoker包含唯一一個函數:public boolean invoke(Object o)。通過這個接口,可以封裝函數調用并返回函數結果。后文你將看到他是怎樣使用的。

2.接口Condition也只包含一個函數:public boolean passes(Object o)。使用這個函數,可以檢測任意類是否滿足任意類型的條件,并返回true或false。同樣,你也將在后文中看到本接口的使用。

3.類SelectStatement代表整個select語句,包含select,from,where和order by等子句。

4.類SelectInstrUCtion表示select子句中的一個單一部分,選定列并指定顯示時該列的名字。一個完整的select子句用一個SelectInstruction對象數組表示。

5.類OrderInstruction代表order by子句的一個單一部分,整個order by子句由一個OrderInstruction對象數組構成。

6.類Executor執行包含了整個執行邏輯的SelectStatement。

7.類ResultTable代表執行SelectStatement后返回的結果集。它用Object[][]的形式組織結果數據,從而可以輕易的轉換和顯示數據。

下面將講述這些類和接口時怎樣協作的。類圖顯示了它們之間的關聯。


一個SelectStatement含有一個對象集合或數組(因為集合和數組都只包含統一類型的對象,所以對象的類型沒有關系);一個SelectInstruction對象數組;一個Condition對象數組;和一個OrderInstruction對象數組。然后把SelectStatement對象傳入Excuter對象,在那里執行這個statement并返回一個ResultTable。

接下來的問題是,SelectInstruction,Condition,OrderInstruction和ResultTable,這些類都是做什么的?我們為什么需要他們?首先,不要一下全看他們,這可能會使你迷惑。一個一個的看,每一個類都是易于理解和使用的。

每一個SelectInstruction代表你希望在結果集中出現的一個列(或者對象的一個屬性)。你為他定義一個名字和Invoker。名字將作為列標題出現,Invoker將在集合中的每一個對象上觸發。在某個對象上觸發后,Invoker在對應列中返回該對象的對應屬性。這項函數功能組成了select子句,在這個子句中,可以定義顯示的屬性,并用as定義列名(如select speed as Max_speed)。注重:你也可以只有一個SelectInstruction,其中的列名串為*。在這種情況下,類中的所有getter()方法都被invoker包覆,其結果都出現在ResultSet中。

每一個Condition代表一個條件,源數據集合中每一個對象都需滿足此條件。這個類對應于where子句,通過它可以通過給定的條件排除任意數目的行。注重:假如想要顯示全部對象,只需傳入空的Condintion[]即可。

每一個OrderInstruction代表一個怎樣排序數據的規則,它由一個Invoker和一個Comparator組成。Invoker的invoke(Object o)方法(作用于對象集合中的一個對象時)會返回一個結果,并于作用于集合中其他對象返回的結果進行比較,從而決定結果數據的排序位置。Comparator(假如實現了)比較兩個對象在invoke作用下返回的結果。假如comparator沒有實現,結果將基于它們各自的compareTo(Object o)方法(假定他們都實現了java.lang,Comparatable)進行比較。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日本高清+成人网在线观看| 97精品一区二区视频在线观看| 国产精品极品尤物在线观看| 亚洲香蕉伊综合在人在线视看| 日韩电视剧在线观看免费网站| 久久久999成人| 亚洲第一福利视频| 日韩一区二区三区国产| 日韩精品久久久久| 国产精品视频午夜| 欧美日韩亚洲精品内裤| 久久亚洲精品国产亚洲老地址| 色综合亚洲精品激情狠狠| 精品国产乱码久久久久久虫虫漫画| 98精品国产自产在线观看| 欧洲亚洲女同hd| 97国产suv精品一区二区62| 久久亚洲国产精品成人av秋霞| 欧美亚洲午夜视频在线观看| 成人性生交xxxxx网站| 亚洲va久久久噜噜噜| 国模叶桐国产精品一区| 欧美多人乱p欧美4p久久| 欧美日韩电影在线观看| 欧洲美女7788成人免费视频| 欧美国产日产韩国视频| 国产精品美女主播在线观看纯欲| 亚洲精品国产欧美| 精品中文视频在线| 狠狠色狠狠色综合日日五| 17婷婷久久www| 久久免费成人精品视频| 亚洲乱亚洲乱妇无码| 欧美性猛交xxxx偷拍洗澡| 欧美性猛交xxxx黑人猛交| 国内精品一区二区三区| 国产午夜精品视频| 国产精品视频久| 日韩精品免费在线视频观看| 综合欧美国产视频二区| 国产一区二区欧美日韩| 成人免费视频97| 亚洲视频国产视频| 久久久精品国产亚洲| 欧美成人四级hd版| 国产999在线| 欧美午夜激情小视频| 久久精品国产清自在天天线| 国产99视频在线观看| 青青草国产精品一区二区| 亚洲人成毛片在线播放| 日韩暖暖在线视频| 91色视频在线导航| 国产精品自拍小视频| 在线观看国产精品日韩av| 欧美国产日韩一区二区三区| 亚洲区中文字幕| 国产精品青青在线观看爽香蕉| 亚洲欧美国内爽妇网| 欧美精品videofree1080p| 久久综合九色九九| 日韩视频精品在线| 国产伦精品免费视频| 91精品国产九九九久久久亚洲| 久久亚洲精品成人| 欧美精品videos另类日本| 黑人与娇小精品av专区| 91精品国产九九九久久久亚洲| 欧美日韩国产专区| 91精品国产91久久久久久久久| 国产91精品青草社区| 韩国19禁主播vip福利视频| 亚洲精品在线视频| 91精品国产综合久久香蕉最新版| 国模精品视频一区二区三区| 国内精品久久久久伊人av| 亚洲女人天堂视频| 国内精品久久影院| 欧美做爰性生交视频| 亚洲黄页视频免费观看| 91在线观看欧美日韩| 亚州欧美日韩中文视频| 国产日韩在线看| 亚洲sss综合天堂久久| 欧美黑人xxxⅹ高潮交| 精品人伦一区二区三区蜜桃免费| 尤物yw午夜国产精品视频明星| 一区二区三区高清国产| 久久久女人电视剧免费播放下载| 国产精品一区二区三| 高潮白浆女日韩av免费看| 国内精品视频一区| 26uuu国产精品视频| 国产精品人人做人人爽| 亚洲男人av在线| 91精品国产综合久久香蕉| 亚洲欧美中文在线视频| 精品国产老师黑色丝袜高跟鞋| 亚洲国产福利在线| 欧美日韩免费看| 91国产高清在线| 亚洲最新av在线网站| 激情亚洲一区二区三区四区| 久久久久久亚洲精品不卡| 亚洲人成77777在线观看网| 日本人成精品视频在线| 日韩色av导航| 国产精品网红直播| 日本sm极度另类视频| 欧美成人亚洲成人| 国产精品久久久久久久久久99| 九九精品视频在线观看| 亚洲aⅴ男人的天堂在线观看| 亚洲国产精品小视频| 欧美裸体xxxx极品少妇软件| 亚洲精品91美女久久久久久久| 亚洲黄色有码视频| 亚洲国产欧美久久| 亚洲国产私拍精品国模在线观看| 亚洲精品国产精品国产自| 久久精品99久久香蕉国产色戒| 亚洲偷熟乱区亚洲香蕉av| 一本色道久久88精品综合| 欧美日韩国产在线播放| 国产精品第七十二页| 久久精品最新地址| 久久久天堂国产精品女人| 91亚洲午夜在线| 欧美黄色片在线观看| 国产精品高潮呻吟视频| 91成人免费观看网站| 午夜精品国产精品大乳美女| 久久综合伊人77777蜜臀| 宅男66日本亚洲欧美视频| 久久免费成人精品视频| 久久久久久久久久av| 国产乱人伦真实精品视频| 高清亚洲成在人网站天堂| 亚洲专区在线视频| 欧美性生交xxxxx久久久| 中文字幕亚洲激情| 搡老女人一区二区三区视频tv| 亚洲a级在线播放观看| 日韩av毛片网| 亚洲美女喷白浆| 夜夜嗨av色一区二区不卡| 欧美激情一区二区久久久| 久久久久久这里只有精品| 欧美精品激情在线| 久久久久久久亚洲精品| 国产一区二区在线播放| 欧美日韩第一页| 国产精品一区二区三区久久久| 97人人做人人爱| 久久久久久成人| 亚洲日韩第一页| 欧美视频专区一二在线观看| 亚洲毛片在线观看| 国产精品伦子伦免费视频| 欧美精品videosex牲欧美| 国产日韩中文字幕在线| 亚洲老板91色精品久久| **欧美日韩vr在线| 欧美性猛交xxxx乱大交蜜桃|