一種處理查詢語句的方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及數(shù)據(jù)庫查詢領(lǐng)域,具體而言,涉及一種處理查詢語句的方法和裝置。
【背景技術(shù)】
[0002] 目前市面上各個大型web(網(wǎng)絡(luò))系統(tǒng)、大型信息化管理系統(tǒng)都普遍存在大型數(shù)據(jù) 庫查詢的需求,過去在進行數(shù)據(jù)庫查詢時通常都是寫死在各個功能模塊中。但隨著軟件技 術(shù)的發(fā)展,越來越多的軟件系統(tǒng)都嘗試采用平臺式開發(fā),以期降低整體研發(fā)成本與研發(fā)周 期。在這樣一個整體背景下,各種通用查詢方案孕育而生。在所有通用查詢方案中幾乎都 無法繞過一個重要的技術(shù)課題,那就是對查詢語句的一系列處理過程,比如對原始查詢語 句的動態(tài)添加查詢條件、進行參數(shù)處理、分頁、排序、分組等等。
[0003] 在這樣一個背景下,各大軟件廠商都提出了各自不同的對查詢語句的解析與處理 的方案與設(shè)計,但這些方案與設(shè)計普遍存在兩個方面的問題:
[0004] 1)未著眼于開發(fā)人員的使用。這里對查詢語句的解析與處理,其目的就是要為開 發(fā)人員提供通用的開發(fā)平臺,提供通用的查詢功能。因此,該功能針對的客戶群是開發(fā)人 員,在設(shè)計上應當更多地考慮開發(fā)人員使用的便捷、易用與靈活,以期在設(shè)計、開發(fā)及日后 的維護、變更中易于理解、易于修改。因此本發(fā)明充分考慮了這些方面的問題,并在實際項 目中得到了廣泛的應用。
[0005] 2)處理過程復雜而不便維護。同類的大多數(shù)方案都嘗試對查詢語句進行一系列 處理,但這些處理過程沒有通過有效解耦而形成一個一個相對獨立的過程,提供給開發(fā)人 員自由選擇。正因為如此而使得這些處理過程不易于維護,也不易于變更以應對日后的變 化。
【發(fā)明內(nèi)容】
[0006] 本發(fā)明提供一種處理查詢語句的方法和裝置,用以通過對查詢語句的處理,一方 面可以方便開發(fā)人員以更加靈活便捷地方式設(shè)計查詢功能,另一方面為原始的查詢語句提 供了動態(tài)查詢條件、高效分頁查詢、動態(tài)排序與分組等功能,為大型管理系統(tǒng)設(shè)計通用查詢 平臺創(chuàng)造了條件。
[0007] 為達到上述目的,本發(fā)明提供了一種處理查詢語句的方法,包括以下步驟:
[0008] 步驟S100 :提供了六個連續(xù)的處理過程:查詢條件動態(tài)添加、查詢參數(shù)轉(zhuǎn)換、查詢 語句解析、分頁查詢功能、排序功能與分組功能,用戶在使用以上處理過程時,可以通過配 置使用方案,自由地選擇哪些過程用哪些過程不用,但必須遵守既定順序;
[0009] 步驟S200 :使用方案確定以后,當用戶提交查詢語句和參數(shù)集時,本方法與裝置 就會根據(jù)使用方案,依次去執(zhí)行各個查詢語句處理過程;
[0010] 步驟S300:當完成所有查詢語句處理過程以后,將產(chǎn)生新的查詢語句與參數(shù)集, 提交查詢模塊執(zhí)行查詢。
[0011]較優(yōu)地,所述步驟S100包括如下步驟:
[0012] 步驟S110 :為用戶提供了六個連續(xù)的處理過程:查詢條件動態(tài)添加、查詢參數(shù)轉(zhuǎn) 換、查詢語句解析、分頁查詢功能、排序功能與分組功能,這些處理過程相互獨立,用戶可以 自由地選擇哪些過程用哪些過程不用,但必須遵守既定順序;
[0013] 步驟S120 :用戶通過配置文件或數(shù)據(jù)庫表,定義一個或多個使用方案,在每個使 用方案中定義要使用哪些處理過程,以及處理過程的執(zhí)行順序。用戶必須選擇至少一個使 用方案,每個使用方案必須有至少一個處理過程,并且執(zhí)行順序必須遵守這個處理過程的 使用要求;
[0014] 較優(yōu)地,所述步驟S200包括如下步驟:
[0015] 步驟S210 :當用戶提交查詢語句和參數(shù)集時,應當確定所用的使用方案。根據(jù)該 使用方案的定義,依次對查詢語句和參數(shù)集進行處理;
[0016] 步驟S220 :用戶可以在查詢語句中標注帶標注關(guān)鍵字的查詢變量,在查詢條件動 態(tài)添加的處理過程中,可以將這些標注搜索出來,并替換為該標注關(guān)鍵字所定義的查詢條 件;
[0017] 步驟S230 :查詢參數(shù)轉(zhuǎn)換處理過程,將原始查詢語句中帶標注的參數(shù)及其參數(shù) 集,轉(zhuǎn)換為JDBC可以識別的查詢變量及其參數(shù)數(shù)組;
[0018] 步驟S240 :查詢語句解析處理過程,將原始查詢語句中最外層的主查詢語句解析 成6個查詢子句:select,from,where,groupby,having,orderby,為后面的處理過程提供 幫助;
[0019] 步驟S250 :分頁查詢功能處理過程,為原始查詢語句提供具有高效分頁查詢的能 力;
[0020] 步驟S260 :排序功能處理過程與分組功能處理過程,分別為原始查詢語句提供動 態(tài)排序與分組的查詢能力。
[0021] 較優(yōu)地,所述步驟S300包括如下步驟:
[0022] 步驟S310 :對完成處理的6個查詢子句重新進行拼裝,形成新的查詢語句及參數(shù) 數(shù)組;
[0023] 步驟S320:將新的查詢語句及參數(shù)數(shù)組提交查詢模塊執(zhí)行查詢。
[0024] 為達到上述目的,本發(fā)明還提供了一種處理查詢語句的裝置,包括:
[0025] 方案確定模塊,提供了六個連續(xù)的處理過程:查詢條件動態(tài)添加、查詢參數(shù)轉(zhuǎn)換、 查詢語句解析、分頁查詢功能、排序功能與分組功能,用戶在使用以上處理過程時,可以通 過配置使用方案,自由地選擇哪些過程用哪些過程不用,但必須遵守既定順序;
[0026] 處理過程執(zhí)行模塊,使用方案確定以后,當用戶提交查詢語句和參數(shù)集時,根據(jù)使 用方案,依次去執(zhí)行各個查詢語句處理過程;
[0027] 提交查詢模塊,當完成所有查詢語句處理過程以后,將產(chǎn)生新的查詢語句與參數(shù) 集,提交查詢模塊執(zhí)行查詢。
[0028] 進一步地,所述方案確定模塊具體用于執(zhí)行以下步驟:
[0029] 為用戶提供了六個連續(xù)的處理過程:查詢條件動態(tài)添加、查詢參數(shù)轉(zhuǎn)換、查詢語句 解析、分頁查詢功能、排序功能與分組功能,這些處理過程相互獨立,用戶可以自由地選擇 哪些過程用哪些過程不用,但必須遵守既定順序;
[0030] 用戶通過配置文件或數(shù)據(jù)庫表,定義一個或多個使用方案,在每個使用方案中定 義要使用哪些處理過程,以及處理過程的執(zhí)行順序,用戶必須選擇至少一個使用方案,每個 使用方案必須有至少一個處理過程,并且執(zhí)行順序必須遵守這個處理過程的使用要求。
[0031] 進一步地,所述處理過程執(zhí)行模塊具體用于執(zhí)行以下步驟:
[0032] 當用戶提交查詢語句和參數(shù)集時,應當確定所用的使用方案,根據(jù)該使用方案的 定義,依次對查詢語句和參數(shù)集進行處理;
[0033] 用戶可以在查詢語句中標注帶標注關(guān)鍵字的查詢變量,在查詢條件動態(tài)添加的處 理過程中,可以將這些標注搜索出來,并替換為該標注關(guān)鍵字所定義的查詢條件;
[0034] 查詢參數(shù)轉(zhuǎn)換處理過程,將原始查詢語句中帶標注的參數(shù)及其參數(shù)集,轉(zhuǎn)換為 JDBC可以識別的查詢變量及其參數(shù)數(shù)組;
[0035] 查詢語句解析處理過程,將原始查詢語句中最外層的主查詢語句解析成6個查詢 子句:select,from,where,groupby,having,orderby,為后面的處理過程提供幫助;
[0036] 分頁查詢功能處理過程,為原始查詢語句提供具有高效分頁查詢的能力;
[0037] 排序功能處理過程與分組功能處理過程,分別為原始查詢語句提供動態(tài)排序與分 組的查詢能力。
[0038] 進一步地,所述提交查詢模塊具體用于執(zhí)行以下步驟:
[0039] 對完成處理的6個查詢子句重新進行拼裝,形成新的查詢語句及參數(shù)數(shù)組;
[0040] 將新的查詢語句及參數(shù)數(shù)組提交查詢模塊執(zhí)行查詢。
[0041] 本發(fā)明為開發(fā)人員進行數(shù)據(jù)查詢提供了許多便捷、易用與靈活的功能,它與其它 同類型的處理查詢語句方法與裝置比較,其優(yōu)勢在于:
[0042] 1)為大型web系統(tǒng)各種數(shù)據(jù)查詢功能提供了強大的平臺支持,可以大大提高其研 發(fā)效率,使維護與變更方便快捷。
[0043] 2)提供了更加簡便易用的查詢變量標注方式,使開發(fā)人員在為查詢語句添加變量 時更加方便。
[0044] 3)提供了更加簡便、易于理解的動態(tài)過濾條件解決方案,使開發(fā)人員為查詢報表 添加過濾條件簡單易行。
[0045] 4)封裝了分頁查詢、排序、分組等方案的具體實現(xiàn),降低了研發(fā)的技術(shù)門檻,提高 了系統(tǒng)運行效率
[0046] 5)提供了簡便易用的可擴展接口,使其它系統(tǒng)在使用本發(fā)明時可以根據(jù)自身的需 要擴展新的功能。
[0047] 6)本發(fā)明可以應用于開發(fā)工具或開發(fā)平臺中,也可以作為獨立的裝置為其它系統(tǒng) 使用。
【附圖說明】
[0048] 為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn) 有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本 發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以 根據(jù)這些附圖獲得其他的附圖。
[0049]圖1為本發(fā)明一個實施例的處理查詢語句的方法流程圖。
【具體實施方式】
[0050] 下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完 整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;?本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有付出創(chuàng)造性勞動前提下所獲得的所有其他 實施例,都屬于本發(fā)明保護的范圍。
[0051] 本發(fā)明要解決的問題是如何為大型軟件管理系統(tǒng)提供一個方便開發(fā)、運行高效的 數(shù)據(jù)查詢解決方案。要解決該問題主要要解決以下問題:為查詢語句提供參數(shù)化方案、提供 動態(tài)添加查詢條件的方案、提供分頁查詢的方案、提供排序和分組方案。同時,本發(fā)明的著 眼點是為開發(fā)人員提供方便、快捷而又靈活的數(shù)據(jù)查詢方案,因此進行