一種基于ibatis實(shí)現(xiàn)sql動(dòng)態(tài)配置的方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及sql配置技術(shù)領(lǐng)域,尤其涉及一種基于ibatis實(shí)現(xiàn)sql動(dòng)態(tài)配置的方 法及系統(tǒng)。
【背景技術(shù)】
[0002] ibatis是一種"半自動(dòng)化"的ORM實(shí)現(xiàn),著力于POJO與SQL之間的映射關(guān)系。也 就是說,ibatis并不會(huì)為程序員在運(yùn)行期自動(dòng)生成SQL執(zhí)行。具體的SQL需要程序員編寫, 然后通過映射配置文件,將SQL所需的參數(shù),以及返回的結(jié)果字段映射到指定的POJO中。
[0003] 在某種場(chǎng)景下,ibatis的普通配置并不能滿足項(xiàng)目的需求,比如查詢的列如果需 要通過配置來實(shí)現(xiàn),即同一種場(chǎng)景下,不同的模塊查詢的列不同,如果還是通過將sql寫在 配置文件里,那么配置文件就要寫很多種情況,大大增加開發(fā)人員的工作量,且編寫配置文 件工作復(fù)雜,人工編寫大量配置文件,導(dǎo)致出錯(cuò)率上升,開發(fā)效率低。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明所要解決的技術(shù)問題是針對(duì)現(xiàn)有技術(shù)的不足,提供一種基于ibatis實(shí)現(xiàn) sql動(dòng)態(tài)配置的方法及系統(tǒng)。
[0005] 本發(fā)明解決上述技術(shù)問題的技術(shù)方案如下:一種基于ibatis實(shí)現(xiàn)sql動(dòng)態(tài)配置的 方法,包括如下步驟:
[0006] 步驟1,在數(shù)據(jù)庫(kù)中建立表名配置表和列配置表,所述表名配置表用于配置場(chǎng)景要 查詢的數(shù)據(jù)表的表名,所述列配置表用于配置要查詢的數(shù)據(jù)表中的列;
[0007] 步驟2,接收查詢請(qǐng)求,解析所述查詢請(qǐng)求得到場(chǎng)景標(biāo)識(shí);
[0008] 步驟3,根據(jù)場(chǎng)景標(biāo)識(shí)在數(shù)據(jù)庫(kù)中查找對(duì)應(yīng)的表名配置表和列名配置表,得到查詢 結(jié)果;
[0009] 步驟4,根據(jù)在數(shù)據(jù)庫(kù)中獲取的查詢結(jié)果生成自定義對(duì)象;
[0010] 步驟5,將調(diào)用者傳入的where條件的實(shí)參封裝進(jìn)自定義對(duì)象中,得到鍵值對(duì);
[0011] 步驟6,運(yùn)行時(shí)將所述鍵值對(duì)傳入預(yù)先編寫的ibatis配置文件中,生成sql語句。
[0012] 本發(fā)明的有益效果是:本發(fā)明將待查詢的數(shù)據(jù)表名和列名等所有需要?jiǎng)討B(tài)實(shí)現(xiàn)的 都配置在數(shù)據(jù)庫(kù)里,只保留一個(gè)配置文件,根據(jù)場(chǎng)景的不同動(dòng)態(tài)配置查詢表、查詢列和查詢 條件,可適用于不同場(chǎng)景;本發(fā)明大大降低了開發(fā)人員的工作量,避免開發(fā)人員針對(duì)不同場(chǎng) 景編寫大量配置文件的問題,進(jìn)而降低了出錯(cuò)率,提高了開發(fā)效率;在要查詢的表和字段發(fā) 生變化時(shí),只需要修改數(shù)據(jù)庫(kù),而不需要修改java代碼和配置文件,減少了開發(fā)工作量。
[0013] 在上述技術(shù)方案的基礎(chǔ)上,本發(fā)明還可以做如下改進(jìn)。
[0014] 進(jìn)一步,所述表名配置表存儲(chǔ)場(chǎng)景標(biāo)識(shí)、要查詢的表名和查詢列的where條件。
[0015] 采用上述進(jìn)一步方案的有益效果:將需要?jiǎng)討B(tài)實(shí)現(xiàn)的都配置在數(shù)據(jù)庫(kù)里,當(dāng)這些 變量需要改變時(shí),修改數(shù)據(jù)庫(kù)中的數(shù)據(jù)即可,不必修改配置文件和java代碼。
[0016] 進(jìn)一步,所述列配置表存儲(chǔ)場(chǎng)景標(biāo)識(shí)、要查詢的表名和要查詢的表的字段名。
[0017] 采用上述進(jìn)一步方案的有益效果:將需要?jiǎng)討B(tài)實(shí)現(xiàn)的都配置在數(shù)據(jù)庫(kù)里,當(dāng)這些 變量需要改變時(shí),修改數(shù)據(jù)庫(kù)中的數(shù)據(jù)即可,不必修改配置文件和java代碼;且將列信息 單獨(dú)存儲(chǔ)在一張表中,使表名配置表和列配置表都不冗余,可提高查詢速度。
[0018] 進(jìn)一步,還包括編寫java適配器類,在接收到查詢請(qǐng)求時(shí),解析所述查詢請(qǐng)求得 到場(chǎng)景標(biāo)識(shí)。
[0019] 進(jìn)一步,還包括編寫java調(diào)用類,在運(yùn)行時(shí)將所述鍵值對(duì)傳入預(yù)先編寫的ibatis 配置文件中,生成sql語句。
[0020] 本發(fā)明解決上述技術(shù)問題的技術(shù)方案如下:一種基于ibatis實(shí)現(xiàn)sql動(dòng)態(tài)配置的 系統(tǒng),包括配置模塊、解析模塊、查詢模塊,對(duì)象生成模塊、封裝模塊和調(diào)用模塊;
[0021] 所述配置模塊,其用于在數(shù)據(jù)庫(kù)中建立表名配置表和列配置表,所述表名配置表 用于配置場(chǎng)景要查詢的數(shù)據(jù)表的表名,所述列配置表用于配置要查詢的數(shù)據(jù)表中的列;
[0022] 所述解析模塊,其用于接收查詢請(qǐng)求,解析所述查詢請(qǐng)求得到場(chǎng)景標(biāo)識(shí);
[0023] 所述查詢模塊,其用于根據(jù)場(chǎng)景標(biāo)識(shí)在數(shù)據(jù)庫(kù)中查找對(duì)應(yīng)的表名配置表和列名配 置表,得到查詢結(jié)果;
[0024] 所述對(duì)象生成模塊,其用于根據(jù)在數(shù)據(jù)庫(kù)中獲取的查詢結(jié)果生成自定義對(duì)象;
[0025] 所述封裝模塊,其用于將調(diào)用者傳入的where條件的實(shí)參封裝進(jìn)自定義對(duì)象中, 得到鍵值對(duì);
[0026] 所述調(diào)用模塊,其用于運(yùn)行時(shí)將所述鍵值對(duì)傳入預(yù)先編寫的ibatis配置文件中, 生成sql語句。
[0027] 在上述技術(shù)方案的基礎(chǔ)上,本發(fā)明還可以做如下改進(jìn)。
[0028] 進(jìn)一步,所述表名配置表存儲(chǔ)場(chǎng)景標(biāo)識(shí)、要查詢的表名和查詢列的where條件。
[0029] 進(jìn)一步,所述列配置表存儲(chǔ)場(chǎng)景標(biāo)識(shí)、要查詢的表名和要查詢的表的字段名。
[0030] 進(jìn)一步,所述解析模塊中預(yù)先編寫有java適配器類,在接收到查詢請(qǐng)求時(shí),解析 所述查詢請(qǐng)求得到場(chǎng)景標(biāo)識(shí)。
[0031] 進(jìn)一步,所述調(diào)用模塊預(yù)先編寫有java調(diào)用類,在運(yùn)行時(shí)將所述鍵值對(duì)傳入預(yù)先 編寫的ibatis配置文件中,生成sql語句。
【附圖說明】
[0032] 圖1為本發(fā)明所述一種基于ibatis實(shí)現(xiàn)sql動(dòng)態(tài)配置的方法流程圖;
[0033] 圖2為本發(fā)明所述一種基于ibatis實(shí)現(xiàn)sql動(dòng)態(tài)配置的系統(tǒng)框圖。
[0034] 附圖中,各標(biāo)號(hào)所代表的部件列表如下:
[0035] 1、配置模塊,2、解析模塊,3、查詢模塊,4,對(duì)象生成模塊,5、封裝模塊,6、調(diào)用模 塊。
【具體實(shí)施方式】
[0036] 以下結(jié)合附圖對(duì)本發(fā)明的原理和特征進(jìn)行描述,所舉實(shí)例只用于解釋本發(fā)明,并 非用于限定本發(fā)明的范圍。
[0037] 如圖1所示,一種基于ibatis實(shí)現(xiàn)sql動(dòng)態(tài)配置的方法,包括如下步驟:
[0038] 步驟1,在數(shù)據(jù)庫(kù)中建立表名配置表和列配置表,所述表名配置表用于配置場(chǎng)景要 查詢的數(shù)據(jù)表的表名,所述列配置表用于配置要查詢的數(shù)據(jù)表中的列;
[0039] 步驟2,接收查詢請(qǐng)求,解析所述查詢請(qǐng)求得到場(chǎng)景標(biāo)識(shí);
[0040] 步驟3,根據(jù)場(chǎng)景標(biāo)識(shí)在數(shù)據(jù)庫(kù)中查找對(duì)應(yīng)的表名配置表和列名配置表,得到查詢 結(jié)果;
[0041] 步驟4,根據(jù)在數(shù)據(jù)庫(kù)中獲取的查詢結(jié)果生成自定義對(duì)象;
[0042] 步驟5,將調(diào)用者傳入的where條件的實(shí)參封裝進(jìn)自定義對(duì)象中,得到鍵值對(duì);
[0043] 步驟6,運(yùn)行時(shí)將所述鍵值對(duì)傳入預(yù)先編寫的ibatis配置文件中,生成sql語句。
[0044] 所述表名配置表存儲(chǔ)場(chǎng)景標(biāo)識(shí)、要查詢的表名和查