一種基于ibatis的快速檢索方法
【技術(shù)領(lǐng)域】
[0001 ]本發(fā)明涉及JAVA技術(shù)開(kāi)發(fā)領(lǐng)域,具體涉及一種基于IBATIS的快速檢索方法。
【背景技術(shù)】
[0002]目前,在JAVA的研發(fā)過(guò)程中,IBATIS是持久層的常用框架。IBATIS提供了較為完整的封裝方法,而且基于XML的自動(dòng)的SQL語(yǔ)句,可以方便滿足各種業(yè)務(wù)需求和跨平臺(tái)需求。但在使用IBATIS處理一對(duì)多的業(yè)務(wù)查詢時(shí),通常會(huì)出現(xiàn)N+1問(wèn)題。即如果查詢一個(gè)教師,并查詢?cè)摻處熕鶐У膶W(xué)生時(shí),IBATIS首先會(huì)通過(guò)一條SQL語(yǔ)句查詢符合條件的教師,再循環(huán)教師列表,分別查詢?cè)摻處熕鶐У膶W(xué)生。如果有8個(gè)教師,則需要查詢9次。這樣將大大降低平臺(tái)的性能,甚至無(wú)法滿足平臺(tái)高并發(fā)的需求。
【發(fā)明內(nèi)容】
[0003]本發(fā)明解決的技術(shù)問(wèn)題在于提供一種基于IBATIS的快速檢索方法,以解決N+1問(wèn)題。
[0004]本發(fā)明解決上述技術(shù)問(wèn)題的技術(shù)方案是:
[0005]首先建立與表相對(duì)應(yīng)的對(duì)象,并通過(guò)聯(lián)合查詢的方式查詢相應(yīng)的數(shù)據(jù);而結(jié)果集通過(guò)ResultMap的方式返回;ResultMap完成返回值與對(duì)象的對(duì)應(yīng)關(guān)系,并通過(guò)groupBy屬性實(shí)現(xiàn)對(duì)結(jié)果的分類封裝;實(shí)現(xiàn)通過(guò)一條查詢語(yǔ)句,對(duì)一對(duì)多業(yè)務(wù)的查詢與封裝。
[0006]所述的方法包括如下步驟:
[0007]第I步、建立對(duì)象A,并包含主要的屬性,其中包括關(guān)鍵的id屬性;
[0008]第2步、建立對(duì)象B,包含其所有屬性;其中在B中,建立A的List集合對(duì)象;
[0009]第3步、確立與B對(duì)應(yīng)的表Tb,并確定屬性id為主鍵;
[0010]第4步、確立與A對(duì)應(yīng)的表Ta,在表中建立與Tb的id相關(guān)聯(lián)的屬性tbid屬性;
[0011]第5步、在IBATIS屬性文件中,建立ResultMap類型的返回值result,其中通過(guò)property確定返回值與對(duì)象A、B的對(duì)應(yīng)關(guān)系;
[0012]第6步、在result返回值,通過(guò)groupBy屬性確定數(shù)據(jù)的分類統(tǒng)計(jì)方法,其中g(shù)roupBy = id;
[00^3] 第7步、關(guān)聯(lián)查詢表Ta與Tb,并通過(guò)Tb.1d = Ta.tb—id關(guān)聯(lián)查詢,并使用result返回結(jié)果。
[0014]本發(fā)明的有益效果是:通過(guò)這種查詢與封裝方法,可以通過(guò)一條SQL語(yǔ)句實(shí)現(xiàn)數(shù)據(jù)的查詢與封裝,這樣將大大減少系統(tǒng)的1操作,提高平臺(tái)的執(zhí)行效率;而且這種方式,配置非常簡(jiǎn)潔,通過(guò)XML即可完成相應(yīng)的對(duì)應(yīng)關(guān)系,減少代碼編譯工作,減少相應(yīng)的風(fēng)險(xiǎn)。
【附圖說(shuō)明】
[0015]下面結(jié)合附圖對(duì)本發(fā)明進(jìn)一步說(shuō)明:
[0016]圖1為本發(fā)明的流程圖。
【具體實(shí)施方式】
[0017]下面具體以教育云共享平臺(tái)為例,詳細(xì)講解該發(fā)明的詳細(xì)過(guò)程。
[0018]教育云共享存在教師、科組等信息,其中每一個(gè)教育都屬于某一個(gè)科組,以下通過(guò)查詢所有科組和科組下的教育。
[0019]如附圖1所示;包括如下步驟:
[0020]第I步、建立對(duì)象Teacher,其中包括id、name屬性;
[0021 ] 第2步、建立對(duì)象Subject,其中包括id、name和集合List屬性;
[0022]第3步、確立表t_sub ject,其中包括id和name字段;
[0023]第4步、建立,其中包括id、name、subject_id屬性;
[0024]第5步、在IBATIS屬性文件中,建立ResultMap類型的返回值result,確之下groupBy = i d;并確定數(shù)據(jù)加返回值與對(duì)象的關(guān)聯(lián)關(guān)系
[0025]第6步、通過(guò)集合查Wt_subject和t_teacher表,并把返回值返回為result。
【主權(quán)項(xiàng)】
1.一種基于IBATIS的快速檢索方法,其特征在于:首先建立與表相對(duì)應(yīng)的對(duì)象,并通過(guò)聯(lián)合查詢的方式查詢相應(yīng)的數(shù)據(jù);而結(jié)果集通過(guò)ResultMap的方式返回;ResultMap完成返回值與對(duì)象的對(duì)應(yīng)關(guān)系,并通過(guò)groupBy屬性實(shí)現(xiàn)對(duì)結(jié)果的分類封裝;實(shí)現(xiàn)通過(guò)一條查詢語(yǔ)句,對(duì)一對(duì)多業(yè)務(wù)的查詢與封裝。2.根據(jù)權(quán)利要求1所述的基于IBATIS快速檢索方法,其特征在于:所述的方法包括如下步驟: 第I步、建立對(duì)象A,并包含主要的屬性,其中包括關(guān)鍵的id屬性; 第2步、建立對(duì)象B,包含其所有屬性;其中在B中,建立A的Li st集合對(duì)象; 第3步、確立與B對(duì)應(yīng)的表Tb,并確定屬性id為主鍵; 第4步、確立與A對(duì)應(yīng)的表Ta,在表中建立與Tb的id相關(guān)聯(lián)的屬性tb_id屬性; 第5步、在IBATIS屬性文件中,建立ResultMap類型的返回值result,其中通過(guò)property確定返回值與對(duì)象A、B的對(duì)應(yīng)關(guān)系; 第6步、在result返回值,通過(guò)groupBy屬性確定數(shù)據(jù)的分類統(tǒng)計(jì)方法,其中g(shù)roupBy =id; 第7步、關(guān)聯(lián)查詢表Ta與Tb,并通過(guò)Tb.1d = Ta.tb_id關(guān)聯(lián)查詢,并使用result返回結(jié)果O
【專利摘要】本發(fā)明涉及JAVA技術(shù)開(kāi)發(fā)領(lǐng)域,具體涉及一種基于IBATIS的快速檢索方法。本發(fā)明首先建立與表相對(duì)應(yīng)的對(duì)象,并通過(guò)聯(lián)合查詢的方式查詢相應(yīng)的數(shù)據(jù);而結(jié)果集通過(guò)ResultMap的方式返回;ResultMap完成返回值與對(duì)象的對(duì)應(yīng)關(guān)系,并通過(guò)groupBy屬性實(shí)現(xiàn)對(duì)結(jié)果的分類封裝;實(shí)現(xiàn)通過(guò)一條查詢語(yǔ)句,對(duì)一對(duì)多業(yè)務(wù)的查詢與封裝。本發(fā)明通過(guò)優(yōu)化ibatis的查詢結(jié)構(gòu)與返回值結(jié)構(gòu),解決了查詢效率低的問(wèn)題;可以用于基于IBATIS的快速檢索。
【IPC分類】G06F17/30
【公開(kāi)號(hào)】CN105550261
【申請(qǐng)?zhí)枴緾N201510903659
【發(fā)明人】關(guān)班記, 季統(tǒng)凱
【申請(qǐng)人】國(guó)云科技股份有限公司
【公開(kāi)日】2016年5月4日
【申請(qǐng)日】2015年12月9日