本發(fā)明涉及一種電商數(shù)據(jù)庫(kù)維護(hù)優(yōu)化領(lǐng)域,尤其涉及一種基于XML配置的動(dòng)態(tài)化SQL查詢(xún)方法。
背景技術(shù):
目前,在電子商務(wù)領(lǐng)域,由于數(shù)字商品需要的的描述特征多、所涉行業(yè)廣,且經(jīng)常需要根據(jù)業(yè)務(wù)營(yíng)銷(xiāo)需求來(lái)變更SQL語(yǔ)句,提高了開(kāi)發(fā)相關(guān)數(shù)據(jù)庫(kù)的難度,加之開(kāi)發(fā)人員的經(jīng)驗(yàn)不盡相同,配合協(xié)調(diào)也比較困難,導(dǎo)致在更換SQL語(yǔ)句的過(guò)程中工作量和工作難度日巨,費(fèi)時(shí)費(fèi)力,很不經(jīng)濟(jì)。
這主要是由于SQL語(yǔ)句固有的以下幾方面特點(diǎn)所決定的;1.在傳統(tǒng)的開(kāi)發(fā)模式中SQL語(yǔ)句被硬編碼在程序代碼中,導(dǎo)致一旦交付使用后,若發(fā)現(xiàn)設(shè)計(jì)故障和隨著數(shù)據(jù)堆積造成的性能下降的問(wèn)題時(shí),只能通過(guò)重新編碼再測(cè)試并發(fā)布新版本來(lái)的手段來(lái)解決;2.在傳統(tǒng)硬編碼的情形中,還大量地出現(xiàn)參數(shù)不同,語(yǔ)句不同的情況,導(dǎo)致大量的代碼邏輯跳轉(zhuǎn)被寫(xiě)死在程序源碼中,一旦需要增加新的邏輯條件,則需要重新追加代碼,導(dǎo)致占用內(nèi)存資源過(guò)多,計(jì)算效能下降;3.SQL語(yǔ)句在代碼內(nèi)的分散性,還嚴(yán)重?cái)_亂了代碼的可讀性;在性能跟蹤時(shí),也難以定位最終執(zhí)行的邏輯次序。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本發(fā)明提供一種基于XML配置的動(dòng)態(tài)化SQL組裝方法,達(dá)到靈活地組裝SQL的目的,解決硬編碼SQL帶來(lái)的前述問(wèn)題和缺陷。
為了達(dá)成本發(fā)明的上述目的,本發(fā)明的技術(shù)方案如下。
基于XML配置的動(dòng)態(tài)化SQL查詢(xún)方法,根據(jù)業(yè)務(wù)邏輯將SQL語(yǔ)句分解并存放在XML文件中,并為分解的SQL語(yǔ)句設(shè)置參數(shù)值匹配的條件;為查詢(xún)請(qǐng)求配置參數(shù)列表;執(zhí)行查詢(xún)時(shí)根據(jù)查詢(xún)鍵值調(diào)出參數(shù)值匹配條件能與參數(shù)列表相匹配的SQL語(yǔ)句,將調(diào)出的SQL語(yǔ)句組合成SQL組裝對(duì)象,該SQL組裝對(duì)象負(fù)責(zé)執(zhí)行查詢(xún)請(qǐng)求。
優(yōu)選地,組合SQL組裝對(duì)象時(shí),通過(guò)哈希值檢索參與組合的SQL。
在某些實(shí)施例中,所述XML文件在初始化時(shí)加載到緩存;執(zhí)行查詢(xún)時(shí)根據(jù)查詢(xún)鍵值判斷欲組裝之SQL組裝對(duì)象是否已在內(nèi)存中,若是,則直接使用內(nèi)存中的該SQL組裝對(duì)象。
優(yōu)選地,在某些實(shí)施例中,所述匹配條件是給定參數(shù)名,并限該匹配定條件為該參數(shù)名存在且值不為空時(shí)成立。
優(yōu)選地,在某些實(shí)施例中,所述匹配條件是邏輯運(yùn)算。
優(yōu)選地,在某些實(shí)施例中,所述邏輯運(yùn)算是值大于或等于N時(shí)成立。
優(yōu)選地,在某些實(shí)施例中,所述邏輯運(yùn)算是值小于或等于M時(shí)成立。
采用本發(fā)明的技術(shù)方案后,大幅度簡(jiǎn)化了SQL語(yǔ)句在編程中的硬代碼實(shí)現(xiàn)(JAVA代碼、存儲(chǔ)過(guò)程等),同時(shí)提供了文件系統(tǒng)層面的XML化,在軟件系統(tǒng)發(fā)布后,仍然提供了快速定位錯(cuò)誤;快速修改、快速部署。此外,本發(fā)明優(yōu)選實(shí)施的緩存機(jī)制能夠在內(nèi)存與性能間找到了良好的平衡。
本發(fā)明人已經(jīng)在此發(fā)明內(nèi)容章節(jié)總地描述了本發(fā)明的特征和優(yōu)點(diǎn);然而,本發(fā)明難以通過(guò)窮舉的方式一一對(duì)所有基于本發(fā)明精神的技術(shù)方案進(jìn)行羅列。所以,以下將通過(guò)對(duì)本發(fā)明實(shí)施的舉例,使本發(fā)明之精神對(duì)于本領(lǐng)域普通技術(shù)人員而言已經(jīng)能夠清楚地掌握,所以,在本發(fā)明中未明確給出的另外的特征、優(yōu)點(diǎn)和實(shí)施方案對(duì)于查看了本發(fā)明的本領(lǐng)域普通技術(shù)人員來(lái)說(shuō)都是清楚的,因此,應(yīng)該理解,吸取了本發(fā)明之后對(duì)本發(fā)明所作出的修飾和改進(jìn)都在本專(zhuān)利的保護(hù)范圍之內(nèi),對(duì)于在本發(fā)明的基礎(chǔ)上作出的變劣性技術(shù)方案也屬于本專(zhuān)利的保護(hù)范圍內(nèi)。
附圖說(shuō)明
圖1是本發(fā)明實(shí)施例原理圖。
具體實(shí)施方式
為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,以下將列舉實(shí)施例對(duì)本發(fā)明的具體實(shí)施方式做詳細(xì)說(shuō)明。在以下的描述中闡述了以便于充分理解本發(fā)明的具體實(shí)施例,但是,本發(fā)明能夠以不同于以下描述的方式實(shí)施,本領(lǐng)域技術(shù)人員可以在不違背本發(fā)明內(nèi)涵的情況下做類(lèi)似推廣。因此,本發(fā)明不受以下公開(kāi)的具體實(shí)施例的限制。
如圖1所示,本實(shí)施例基于XML配置的動(dòng)態(tài)化SQL查詢(xún)方法,XML配置項(xiàng)框正式根據(jù)本發(fā)明精神的要求根據(jù)業(yè)務(wù)邏輯將SQL語(yǔ)句分解并存放在XML文件中的一種實(shí)施。在該實(shí)施中,為分解的SQL語(yǔ)句設(shè)置了參數(shù)值匹配的條件;該匹配條件可以通過(guò)test條件判斷或test條件語(yǔ)句得以實(shí)施。特別地,在本實(shí)施例中,還可以通過(guò)assign變量賦值改變?cè)撈ヅ錀l件。
如圖1所示,本實(shí)施例基于XML配置的動(dòng)態(tài)化SQL查詢(xún)方法,請(qǐng)求對(duì)象框正式根據(jù)本發(fā)明精神的要求為查詢(xún)請(qǐng)求配置參數(shù)列表。圖1的箭頭示意根據(jù)本發(fā)明精神的要求根據(jù)查詢(xún)鍵值調(diào)出參數(shù)值匹配條件能與參數(shù)列表相匹配的SQL語(yǔ)句,將調(diào)出的SQL語(yǔ)句組合成SQL組裝對(duì)象,該SQL組裝對(duì)象負(fù)責(zé)執(zhí)行查詢(xún)請(qǐng)求。其中,可執(zhí)行語(yǔ)句框示意了根據(jù)本發(fā)明精神實(shí)施的一種SQL對(duì)象。
在本實(shí)施例中,當(dāng)執(zhí)行請(qǐng)求發(fā)起時(shí),系統(tǒng)根據(jù)查詢(xún)鍵值,判斷是否已存在內(nèi)存組裝對(duì)象,不存在時(shí)立即從緩存XML讀取配置值解析為組裝對(duì)象。根據(jù)執(zhí)行請(qǐng)求的參數(shù),組裝對(duì)象通過(guò)哈希檢索快速組合出最終SQL語(yǔ)句。對(duì)于不存在的參數(shù)則自動(dòng)拋棄。在這一過(guò)程當(dāng)中,內(nèi)存對(duì)象將動(dòng)態(tài)邏輯逐一與請(qǐng)求的參數(shù)列表運(yùn)算,邏輯返回真值,則啟用該動(dòng)態(tài)語(yǔ)句;將語(yǔ)句靜態(tài)部分與動(dòng)態(tài)運(yùn)算為真值的動(dòng)態(tài)語(yǔ)句按順序追加,生成最終SQL語(yǔ)句;將最終SQL語(yǔ)句中匹配的所有參數(shù)名,與參數(shù)列表交集,獲得當(dāng)前執(zhí)行參數(shù)表;將返回的SQL語(yǔ)句與參數(shù)提交數(shù)據(jù)庫(kù)處理,完成查詢(xún)。此外,系統(tǒng)還設(shè)計(jì)了參數(shù)值轉(zhuǎn)換方式,將匹配邏輯可轉(zhuǎn)換為簡(jiǎn)單的標(biāo)示邏輯,在XML層面實(shí)現(xiàn)if,switch,for等語(yǔ)句相似功能。
本實(shí)施的優(yōu)點(diǎn)是顯而易見(jiàn)的,本實(shí)施例用配置化代替硬編碼;動(dòng)態(tài)語(yǔ)義計(jì)算代替邏輯代碼編寫(xiě);產(chǎn)品交付后仍可對(duì)代碼行為進(jìn)行即時(shí)更新,提高服務(wù)響應(yīng)時(shí)間和質(zhì)量。