本發(fā)明涉及計算機技術(shù)領(lǐng)域,具體而言,涉及一種查詢條件生成方法和裝置。
背景技術(shù):
為了查詢具體的業(yè)務表的數(shù)據(jù),我們經(jīng)常需要構(gòu)造復雜的結(jié)構(gòu)化查詢語言(Structured Query Language,縮寫SQL)語句來執(zhí)行,而在這些復雜的SQL語句中,經(jīng)常需要包含各種復雜的過濾條件來進行查詢。在實際的項目中,需要在web前端方面展示和任意組合不同的過濾條件,并且把這些組合后的過濾條件發(fā)送給后臺處理。
業(yè)界已經(jīng)有實現(xiàn)類似功能的jQuery插件jQuery-QueryBuilder,該前端控件可以提供條件和條件組之間的與或關(guān)系的任意組合以及條件的嵌套,但其存在著不少的缺點:
條件容器(容納條件或條件組的部分)的條件輸入框不能使用自定義的前端插件,如不能使用selectize插件來增強條件輸入框;條件容器的輸入框使用前端插件時,不能共用一個配置項,當使用多個相同插件時,會造成配置項冗余且過大;條件容器的輸入框的數(shù)據(jù)來源格式不可配,并且輸出的條件組合數(shù)據(jù)格式不可配,不能很好支持各種數(shù)據(jù)格式需求的場景;該控件的文件大小較大。
技術(shù)實現(xiàn)要素:
鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上述問題的查詢條件生成方法和裝置。
依據(jù)本發(fā)明的一個方面,提供了一種查詢條件生成方法,包括:獲取一 個或多個用于進行條件查詢的工具的配置項;根據(jù)獲取的配置項,生成用于設(shè)置條件數(shù)據(jù)的操作界面;通過所述操作界面響應用戶的操作,得到所述用戶進行條件查詢的條件數(shù)據(jù),以用于進行條件查詢。
可選地,前述的查詢條件生成方法,所述配置項包括所述工具的條件輸入框的數(shù)據(jù)源、所述工具的運算符輸入框的數(shù)據(jù)源、所述工具的展示數(shù)據(jù)、和/或所述工具的條件輸入框的渲染插件;根據(jù)獲取的配置項,繪制用于設(shè)置條件數(shù)據(jù)的操作界面,具體包括:根據(jù)所述配置項,設(shè)置所述操作界面中的條件輸入框的數(shù)據(jù)源、所述操作界面中的運算符輸入框的數(shù)據(jù)源,和/或確定所述操作界面的展示形式,和/或?qū)λ霾僮鹘缑娴臈l件輸入框進行渲染。
可選地,前述的查詢條件生成方法,還包括:當所述配置項中沒有展示數(shù)據(jù)時,調(diào)用預設(shè)方法生成默認展示形式的所述操作界面。
可選地,前述的查詢條件生成方法,在確定所述操作界面的展示形式之前,還包括:清空已有的展示數(shù)據(jù)。
可選地,前述的查詢條件生成方法,通過所述操作界面響應用戶的操作,得到所述用戶進行條件查詢的條件數(shù)據(jù),具體包括:在所述用戶的操作為通過所述操作界面的條件輸入框增加或刪除條件時,從所述操作界面中的條件輸入框的數(shù)據(jù)源中獲取所述條件對應的數(shù)據(jù)并執(zhí)行增加或刪除操作;在所述用戶的操作為通過所述操作界面的條件輸入框增加或刪除條件組時,從所述操作界面中的條件輸入框的數(shù)據(jù)源中獲取所述條件組中包含的多個條件對應的數(shù)據(jù)并執(zhí)行增加或刪除操作。
依據(jù)本發(fā)明的另一方面,還提供了一種查詢條件生成裝置,包括:配置項獲取模塊,用于獲取一個或多個用于進行條件查詢的工具的配置項;操作界面生成模塊,根據(jù)獲取的配置項,生成用于設(shè)置條件數(shù)據(jù)的操作界面;條件數(shù)據(jù)獲取模塊,用于通過所述操作界面響應用戶的操作,得到所述用戶進行條件查詢的條件數(shù)據(jù),以用于進行條件查詢。
可選地,前述的查詢條件生成裝置,所述配置項包括所述工具的條件輸入框的數(shù)據(jù)源、所述工具的運算符輸入框的數(shù)據(jù)源、所述工具的展示數(shù)據(jù)、和/或所述工具的條件輸入框的渲染插件;所述操作界面生成模塊根據(jù)所述配置項,設(shè)置所述操作界面中的條件輸入框的數(shù)據(jù)源、所述操作界面中的運算 符輸入框的數(shù)據(jù)源,和/或確定所述操作界面的展示形式,和/或?qū)λ霾僮鹘缑娴臈l件輸入框進行渲染。
可選地,前述的查詢條件生成裝置,所述操作界面生成模塊當所述配置項中沒有展示數(shù)據(jù)時,調(diào)用預設(shè)方法生成默認展示形式的所述操作界面。
可選地,前述的查詢條件生成裝置,所述操作界面生成模塊在確定所述操作界面的展示形式之前,還清空已有的展示數(shù)據(jù)。
可選地,前述的查詢條件生成裝置,所述條件數(shù)據(jù)獲取模塊在所述用戶的操作為通過所述操作界面的條件輸入框增加或刪除條件時,從所述操作界面中的條件輸入框的數(shù)據(jù)源中獲取所述條件對應的數(shù)據(jù)并執(zhí)行增加或刪除操作;所述條件數(shù)據(jù)獲取模塊在所述用戶的操作為通過所述操作界面的條件輸入框增加或刪除條件組時,從所述操作界面中的條件輸入框的數(shù)據(jù)源中獲取所述條件組中包含的多個條件對應的數(shù)據(jù)并執(zhí)行增加或刪除操作。
根據(jù)以上技術(shù)方案,本發(fā)明的查詢條件生成方法和裝置至少具有以下優(yōu)點:
根據(jù)本發(fā)明的技術(shù)方案,能夠綜合已有的多種工具的配置項生成操作界面,則該操作界面具有已有多種工具的功能特點,則在這個基礎(chǔ)上可以實現(xiàn)快速展示及實現(xiàn)條件和條件組的與或關(guān)系的任意組合以及條件的嵌套;能夠根據(jù)界面獲取對應的條件組合數(shù)據(jù);能夠根據(jù)指定的條件組合數(shù)據(jù)渲染出對應的界面。
上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點能夠更明顯易懂,以下特舉本發(fā)明的具體實施方式。
附圖說明
通過閱讀下文優(yōu)選實施方式的詳細描述,各種其他的優(yōu)點和益處對于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實施方式的目的,而并不認為是對本發(fā)明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:
圖1示出了根據(jù)本發(fā)明的一個實施例的查詢條件生成方法的流程圖;
圖2示出了根據(jù)本發(fā)明的一個實施例的查詢條件生成方法的流程圖;
圖3示出了根據(jù)本發(fā)明的一個實施例的查詢條件生成裝置的框圖。
具體實施方式
下面將參照附圖更詳細地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應當理解,可以以各種形式實現(xiàn)本公開而不應被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達給本領(lǐng)域的技術(shù)人員。
如圖1所示,本發(fā)明的一個實施例提供了一種查詢條件生成方法,包括:
步驟110,獲取一個或多個用于進行條件查詢的工具的配置項(Options)。在本實施例中,用于進行條件查詢的工具可以是插件的形式。在本實施例中,需要傳入用于渲染的配置項Options,包括外部插件傳入的Options和本地插件自帶的Options,取交集最終獲取渲染時所需要的全部Options。
具體地,配置項包括工具中的條件輸入框的數(shù)據(jù)源(filters)、工具中運算符輸入框的數(shù)據(jù)源(operaters)、工具的展示數(shù)據(jù)(data)、和/或工具的條件輸入框進行渲染的插件(filterPlugin)。
步驟120,根據(jù)獲取的配置項,生成用于設(shè)置條件數(shù)據(jù)的操作界面。
具體地:根據(jù)配置項,設(shè)置操作界面中的條件輸入框的數(shù)據(jù)源、操作界面中的運算符輸入框的數(shù)據(jù)源,和/或確定操作界面的展示形式,和/或?qū)Σ僮鹘缑娴臈l件輸入框進行渲染??梢娫诒緦嵤├募夹g(shù)方案中,生成的操作界面集成了多個工具的特點。
步驟130,通過操作界面響應用戶的操作,得到用戶進行條件查詢的條件數(shù)據(jù),以用于進行條件查詢。在本實施例的技術(shù)方案中,當在操作界面上進行條件和條件組的任意組合以及條件嵌套的操作后,可以獲取界面所描述的條件組合數(shù)據(jù),因此,可以把獲取到的條件組合數(shù)據(jù)發(fā)送到后臺處理以完成條件查詢。用戶可進行的操作包括:添加條件、添加條件組、刪除條件、刪除條件組、和/或條件的切換。
根據(jù)本實施例的技術(shù)方案,能夠綜合已有的多種工具的配置項生成操作界面,則該操作界面具有已有多種工具的功能特點,則在這個基礎(chǔ)上可以實現(xiàn)快速展示及實現(xiàn)條件和條件組的與或關(guān)系的任意組合以及條件的嵌套;能夠根據(jù)界面獲取對應的條件組合數(shù)據(jù);能夠根據(jù)指定的條件組合數(shù)據(jù)渲染出對應的界面。
如圖2所示,本發(fā)明的一個實施例提供了一種查詢條件生成方法,包括:
步驟210,獲取一個或多個用于進行條件查詢的工具的配置項(Options)。
步驟220,根據(jù)獲取的配置項,生成用于設(shè)置條件數(shù)據(jù)的操作界面;其中,當所述配置項中沒有展示數(shù)據(jù)時,調(diào)用預設(shè)方法生成默認展示形式的所述操作界面。在本實施例的技術(shù)方案中,當Options中沒有展示數(shù)據(jù)時,調(diào)用預設(shè)的方法直接生成默認的操作界面,相反,會根據(jù)原有展示數(shù)據(jù)遞歸地去調(diào)用相應方法生成操作界面;生成界面之后,程序會判斷條件輸入框的插件配置項filterPlugin是否存在來決定是否調(diào)用相應的工具(即包括相應配置項內(nèi)容的插件)進行渲染。
進一步地,在生成操作界面之前,清空已有的展示數(shù)據(jù)。在本實施例的技術(shù)方案中,當配置項發(fā)生更新需要重新生成新的操作界面時,需要將已有的展示數(shù)據(jù)置空,重新獲取展示數(shù)據(jù)來確定操作界面的展示形式。
步驟230,在用戶的操作為通過操作界面的條件輸入框增加或刪除條件時,從操作界面中的條件輸入框的數(shù)據(jù)源中獲取條件對應的數(shù)據(jù)并執(zhí)行增加或刪除操作;在用戶的操作為通過操作界面的條件輸入框增加或刪除條件組時,從操作界面中的條件輸入框的數(shù)據(jù)源中獲取條件組中包含的多個條件對應的數(shù)據(jù)并執(zhí)行增加或刪除操作。根據(jù)本實施例的技術(shù)方案中,可以首先判斷所有的輸入框是否符合要求,如非空、輸入值合法,繼續(xù)獲取條件組合數(shù)據(jù),如果不合法則返回空數(shù)據(jù);然后獲取操作界面中輸入的條件和/或條件組,如果是條件則直接從相應數(shù)據(jù)源中獲取對應數(shù)據(jù)即可;如果是條件組,則可將條件組是為樹形結(jié)構(gòu),遞歸地取樹形結(jié)構(gòu)的子節(jié)點,直至所取得的子節(jié)點為條件;最后把獲取到的所有子節(jié)點的數(shù)據(jù)封裝為操作界面所描述的數(shù)據(jù)。
如圖3所示,本發(fā)明的一個實施例提供了一種查詢條件生成裝置,包括:
配置項獲取模塊310,獲取一個或多個用于進行條件查詢的工具的配置項(Options)。在本實施例中,用于進行條件查詢的工具可以是插件的形式。在本實施例中,需要傳入用于渲染的配置項Options,包括外部插件傳入的Options和本地插件自帶的Options,取交集最終獲取渲染時所需要的全部Options。
具體地,配置項包括工具中的條件輸入框的數(shù)據(jù)源(filters)、工具中運算符輸入框的數(shù)據(jù)源(operaters)、工具的展示數(shù)據(jù)(data)、和/或工具的條件輸入框進行渲染的插件(filterPlugin)。
操作界面生成模塊320,根據(jù)獲取的配置項,生成用于設(shè)置條件數(shù)據(jù)的操作界面。
具體地:根據(jù)配置項,設(shè)置操作界面中的條件輸入框的數(shù)據(jù)源、操作界面中的運算符輸入框的數(shù)據(jù)源,和/或確定操作界面的展示形式,和/或?qū)Σ僮鹘缑娴臈l件輸入框進行渲染??梢娫诒緦嵤├募夹g(shù)方案中,生成的操作界面集成了多個工具的特點。
條件數(shù)據(jù)獲取模塊330,通過操作界面響應用戶的操作,得到用戶進行條件查詢的條件數(shù)據(jù),以用于進行條件查詢。在本實施例的技術(shù)方案中,當在操作界面上進行條件和條件組的任意組合以及條件嵌套的操作后,可以獲取界面所描述的條件組合數(shù)據(jù),因此,可以把獲取到的條件組合數(shù)據(jù)發(fā)送到后臺處理以完成條件查詢。用戶可進行的操作包括:添加條件、添加條件組、刪除條件、刪除條件組、和/或條件的切換。
根據(jù)本實施例的技術(shù)方案,能夠綜合已有的多種工具的配置項生成操作界面,則該操作界面具有已有多種工具的功能特點,則在這個基礎(chǔ)上可以實現(xiàn)快速展示及實現(xiàn)條件和條件組的與或關(guān)系的任意組合以及條件的嵌套;能夠根據(jù)界面獲取對應的條件組合數(shù)據(jù);能夠根據(jù)指定的條件組合數(shù)據(jù)渲染出對應的界面。
本發(fā)明的一個實施例提供了一種查詢條件生成方法,包括:
配置項獲取模塊310,獲取一個或多個用于進行條件查詢的工具的配置項(Options)。
操作界面生成模塊320,根據(jù)獲取的配置項,生成用于設(shè)置條件數(shù)據(jù)的操作界面;其中,當所述配置項中沒有展示數(shù)據(jù)時,調(diào)用預設(shè)方法生成默認展示形式的所述操作界面。在本實施例的技術(shù)方案中,當Options中沒有展示數(shù)據(jù)時,調(diào)用預設(shè)的方法直接生成默認的操作界面,相反,會根據(jù)原有展示數(shù)據(jù)遞歸地去調(diào)用相應方法生成操作界面;生成界面之后,程序會判斷條件輸入框的插件配置項filterPlugin是否存在來決定是否調(diào)用相應的工具(即包括相應配置項內(nèi)容的插件)進行渲染。
進一步地,在生成操作界面之前,清空已有的展示數(shù)據(jù)。在本實施例的技術(shù)方案中,當配置項發(fā)生更新需要重新生成新的操作界面時,需要將已有的展示數(shù)據(jù)置空,重新獲取展示數(shù)據(jù)來確定操作界面的展示形式。
條件數(shù)據(jù)獲取模塊330,在用戶的操作為通過操作界面的條件輸入框增加或刪除條件時,從操作界面中的條件輸入框的數(shù)據(jù)源中獲取條件對應的數(shù)據(jù)并執(zhí)行增加或刪除操作;在用戶的操作為通過操作界面的條件輸入框增加或刪除條件組時,從操作界面中的條件輸入框的數(shù)據(jù)源中獲取條件組中包含的多個條件對應的數(shù)據(jù)并執(zhí)行增加或刪除操作。根據(jù)本實施例的技術(shù)方案中,可以首先判斷所有的輸入框是否符合要求,如非空、輸入值合法,繼續(xù)獲取條件組合數(shù)據(jù),如果不合法則返回空數(shù)據(jù);然后獲取操作界面中輸入的條件和/或條件組,如果是條件則直接從相應數(shù)據(jù)源中獲取對應數(shù)據(jù)即可;如果是條件組,則可將條件組是為樹形結(jié)構(gòu),遞歸地取樹形結(jié)構(gòu)的子節(jié)點,直至所取得的子節(jié)點為條件;最后把獲取到的所有子節(jié)點的數(shù)據(jù)封裝為操作界面所描述的數(shù)據(jù)。
在此提供的算法和顯示不與任何特定計算機、虛擬系統(tǒng)或者其它設(shè)備固有相關(guān)。各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的描述,構(gòu)造這類系統(tǒng)所要求的結(jié)構(gòu)是顯而易見的。此外,本發(fā)明也不針對任何特定編程語言。應當明白,可以利用各種編程語言實現(xiàn)在此描述的本發(fā)明的內(nèi)容, 并且上面對特定語言所做的描述是為了披露本發(fā)明的最佳實施方式。
在此處所提供的說明書中,說明了大量具體細節(jié)。然而,能夠理解,本發(fā)明的實施例可以在沒有這些具體細節(jié)的情況下實踐。在一些實例中,并未詳細示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對本說明書的理解。
類似地,應當理解,為了精簡本公開并幫助理解各個發(fā)明方面中的一個或多個,在上面對本發(fā)明的示例性實施例的描述中,本發(fā)明的各個特征有時被一起分組到單個實施例、圖、或者對其的描述中。然而,并不應將該公開的方法解釋成反映如下意圖:即所要求保護的本發(fā)明要求比在每個權(quán)利要求中所明確記載的特征更多的特征。更確切地說,如下面的權(quán)利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個實施例的所有特征。因此,遵循具體實施方式的權(quán)利要求書由此明確地并入該具體實施方式,其中每個權(quán)利要求本身都作為本發(fā)明的單獨實施例。
本領(lǐng)域那些技術(shù)人員可以理解,可以對實施例中的設(shè)備中的模塊進行自適應性地改變并且把它們設(shè)置在與該實施例不同的一個或多個設(shè)備中??梢园褜嵤├械哪K或單元或組件組合成一個模塊或單元或組件,以及此外可以把它們分成多個子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設(shè)備的所有過程或單元進行組合。除非另外明確陳述,本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的每個特征可以由提供相同、等同或相似目的的替代特征來代替。
此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實施例包括其它實施例中所包括的某些特征而不是其它特征,但是不同實施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實施例。例如,在下面的權(quán)利要求書中,所要求保護的實施例的任意之一都可以以任意的組合方式來使用。
本發(fā)明的各個部件實施例可以以硬件實現(xiàn),或者以在一個或者多個處理器上運行的軟件模塊實現(xiàn),或者以它們的組合實現(xiàn)。本領(lǐng)域的技術(shù)人員應當理解,可以在實踐中使用微處理器或者數(shù)字信號處理器(DSP)來實現(xiàn)根據(jù)本發(fā)明實施例的查詢條件生成裝置中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設(shè)備或 者裝置程序(例如,計算機程序和計算機程序產(chǎn)品)。這樣的實現(xiàn)本發(fā)明的程序可以存儲在計算機可讀介質(zhì)上,或者可以具有一個或者多個信號的形式。這樣的信號可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。
應該注意的是上述實施例對本發(fā)明進行說明而不是對本發(fā)明進行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計出替換實施例。在權(quán)利要求中,不應將位于括號之間的任何參考符號構(gòu)造成對權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個”不排除存在多個這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當編程的計算機來實現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個可以是通過同一個硬件項來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。