resultmap 動(dòng)態(tài)sql中的foreach
夕逆IT
- 數(shù)據(jù)庫
- 2023-08-13
- 91

大家好,今天來為大家分享resultmap的一些知識(shí)點(diǎn),和動(dòng)態(tài)sql中的foreach的問題解析,大家要是都明白,那么可以忽略,如果不太清楚的話可以看看本篇文章,相信很...
大家好,今天來為大家分享resultmap的一些知識(shí)點(diǎn),和動(dòng)態(tài)sql中的foreach的問題解析,大家要是都明白,那么可以忽略,如果不太清楚的話可以看看本篇文章,相信很大概率可以解決您的問題,接下來我們就一起來看看吧!
resulttype和resultmap的區(qū)別
主要區(qū)別如下:
1、resultType:當(dāng)使用resultType做SQL語句返回結(jié)果類型處理時(shí),對(duì)于SQL語句查詢出的字段在相應(yīng)的pojo中必須有和它相同的字段對(duì)應(yīng),而resultType中的內(nèi)容就是pojo在本項(xiàng)目中的位置。
因此對(duì)于單表查詢的話用resultType是最合適的
2、resultMap:當(dāng)使用resultMap做SQL語句返回結(jié)果類型處理時(shí),通常需要在mapper.xml中定義resultMap進(jìn)行pojo和相應(yīng)表字段的對(duì)應(yīng)。
resultMap對(duì)于一對(duì)一表連接的處理方式通常為在主表的pojo中添加嵌套另一個(gè)表的pojo,然后在mapper.xml中采用association節(jié)點(diǎn)元素進(jìn)行對(duì)另一個(gè)表的連接處理
3、resultType是直接表示返回類型的(對(duì)應(yīng)著我們的model對(duì)象中的實(shí)體)
resultMap則是對(duì)外部ResultMap的引用(提前定義了db和model之間的隱射key-->value關(guān)系),但是resultType跟resultMap不能同時(shí)存在。
MyBatis中resultMap=“Map”和resultType=“Map”區(qū)別
MyBatis中在查詢進(jìn)行select映射的時(shí)候,返回類型可以用resultType,也可以用resultMap,resultType是直接表示返回類型的,而resultMap則是對(duì)外部ResultMap的引用,但是resultType跟resultMap不能同時(shí)存在。在MyBatis進(jìn)行查詢映射的時(shí)候,其實(shí)查詢出來的每一個(gè)屬性都是放在一個(gè)對(duì)應(yīng)的Map里面的,其中鍵是屬性名,值則是其對(duì)應(yīng)的值。
當(dāng)提供的返回類型屬性是resultType的時(shí)候,MyBatis會(huì)將Map里面的鍵值對(duì)取出賦給resultType所指定的對(duì)象對(duì)應(yīng)的屬性。所以其實(shí)MyBatis的每一個(gè)查詢映射的返回類型都是ResultMap,只是當(dāng)我們提供的返回類型屬性是resultType的時(shí)候,MyBatis對(duì)自動(dòng)的給我們把對(duì)應(yīng)的值賦給resultType所指定對(duì)象的屬性,而當(dāng)我們提供的返回類型是resultMap的時(shí)候,因?yàn)镸ap不能很好表示領(lǐng)域模型,我們就需要自己再進(jìn)一步的把它轉(zhuǎn)化為對(duì)應(yīng)的對(duì)象,這常常在復(fù)雜查詢中很有作用。
map函數(shù)的輸入輸出和處理過程
map函數(shù)的輸入是一個(gè)函數(shù)和一個(gè)可迭代對(duì)象(如列表、元組等),輸出是一個(gè)迭代器。處理過程如下:1.map函數(shù)將傳入的可迭代對(duì)象按照順序取出其中的元素。2.對(duì)每個(gè)元素應(yīng)用傳入的函數(shù),即將每個(gè)元素作為參數(shù)傳遞給函數(shù),得到函數(shù)的返回值。3.將每個(gè)元素的處理結(jié)果依次放入一個(gè)新的迭代器中。示例代碼:```defdouble(x):returnx*2my_list=[1,2,3,4,5]result=map(double,my_list)#輸出結(jié)果是一個(gè)迭代器print(result)#輸出:<mapobjectat0x7fb27ecaeb50>#遍歷迭代器輸出處理過的結(jié)果forvalueinresult:print(value,end='')#輸出:246810```在上述示例代碼中,函數(shù)double被應(yīng)用到my_list中的每個(gè)元素上,然后將處理結(jié)果放入一個(gè)新的迭代器result中。最后通過遍歷迭代器輸出處理過的結(jié)果。
requestmap和requesttype的區(qū)別
MyBatis中在查詢進(jìn)行select映射的時(shí)候,返回類型可以用resultType,也可以用resultMap,resultType是直接表示返回類型的,而resultMap則是對(duì)外部ResultMap的引用,但是resultType跟resultMap不能同時(shí)存在。
在MyBatis進(jìn)行查詢映射時(shí),其實(shí)查詢出來的每一個(gè)屬性都是放在一個(gè)對(duì)應(yīng)的Map里面的,其中鍵是屬性名,值則是其對(duì)應(yīng)的值。
①當(dāng)提供的返回類型屬性是resultType時(shí),MyBatis會(huì)將Map里面的鍵值對(duì)取出賦給resultType所指定的對(duì)象對(duì)應(yīng)的屬性。所以其實(shí)MyBatis的每一個(gè)查詢映射的返回類型都是ResultMap,只是當(dāng)提供的返回類型屬性是resultType的時(shí)候,MyBatis對(duì)自動(dòng)的給把對(duì)應(yīng)的值賦給resultType所指定對(duì)象的屬性。
②當(dāng)提供的返回類型是resultMap時(shí),因?yàn)镸ap不能很好表示領(lǐng)域模型,就需要自己再進(jìn)一步的把它轉(zhuǎn)化為對(duì)應(yīng)的對(duì)象,這常常在復(fù)雜查詢中很有作用。
好了,關(guān)于resultmap和動(dòng)態(tài)sql中的foreach的問題到這里結(jié)束啦,希望可以解決您的問題哈!
本文鏈接:http://xinin56.com/su/3277.html