resultmap返回類型 resultmap與resulttype有什么區(qū)別?
resultmap與resulttype有什么區(qū)別?當(dāng)使用mybatis進(jìn)行數(shù)據(jù)庫連接操作時(shí),通常有兩種方法來處理SQL語句返回的結(jié)果:一種是resulttype;另一種是resultmap:1。Re
resultmap與resulttype有什么區(qū)別?
當(dāng)使用mybatis進(jìn)行數(shù)據(jù)庫連接操作時(shí),通常有兩種方法來處理SQL語句返回的結(jié)果:一種是resulttype;另一種是resultmap:1。Resulttype:當(dāng)使用Resulttype處理SQL語句返回的結(jié)果時(shí),SQL語句查詢的字段必須在對應(yīng)的POJO中有與其對應(yīng)的字段,而Resulttype中的字段必須有與其對應(yīng)的字段,這是POJO在本項(xiàng)目中的位置。因此,對于單表查詢,使用resulttype是最合適的。2Resultmap:在使用Resultmap處理SQL語句的返回結(jié)果類型時(shí),通常需要使用映射器.xml定義resultmap以對應(yīng)POJO和相應(yīng)的表字段。Resultmap通常通過將嵌套在另一個(gè)表中的POJO添加到主表的POJO,然后添加嵌套在另一個(gè)表中的POJO來處理一對一的表聯(lián)接映射器.xml三。Resulttype直接表示返回類型(對應(yīng)于我們模型對象中的實(shí)體),resultmap表示外部resultmap(預(yù)先定義的dB和Mo),但是Resulttype和resultmap不能同時(shí)存在。
ResultMap和ResultType在使用中的區(qū)別?
使用mybatis進(jìn)行數(shù)據(jù)庫連接操作時(shí),通常有兩種方式來處理SQL語句返回的結(jié)果,一種是resulttype,另一種是resultmap:
使用resulttype處理SQL語句返回的結(jié)果時(shí),SQL語句查詢的字段必須有與之對應(yīng)的相同字段它位于相應(yīng)的POJO中,resulttype中的內(nèi)容是該項(xiàng)目中的POJO位置。
因此,使用resulttype進(jìn)行單表查詢最為合適
使用resultmap處理SQL語句的返回結(jié)果類型時(shí),通常需要使用映射器.xml定義resultmap以對應(yīng)POJO和相應(yīng)的表字段。
Resultmap通常通過將嵌套在另一個(gè)表中的POJO添加到主表的POJO來處理一對一的表聯(lián)接,然后添加嵌套在另一個(gè)表中的POJO映射器.xml關(guān)聯(lián)節(jié)點(diǎn)元素用于聯(lián)接另一個(gè)表
resultmap是對外部resultmap的引用(dB和model之間的隱式鍵-->value關(guān)系是預(yù)先定義的),但resulttype和resultmap不能同時(shí)鏈接。
怎么設(shè)置sqlStatementName和resultType屬?
在mybatis中,選擇和映射查詢時(shí),返回類型可以是resulttype或resultmap。Resulttype直接表示返回類型,resultmap表示外部resultmap,但Resulttype和resultmap不能同時(shí)存在。在mybatis執(zhí)行查詢映射時(shí),實(shí)際上,找到的每個(gè)屬性都放在一個(gè)對應(yīng)的映射中,其中鍵是屬性名,值是對應(yīng)的值。
①當(dāng)返回類型屬性為resulttype時(shí),mybatis將從分配給resulttype指定的對象的相應(yīng)屬性中檢索映射中的鍵值對。因此,實(shí)際上,mybatis中每個(gè)查詢映射的返回類型都是resultmap。只有當(dāng)提供的返回類型屬性是resulttype時(shí),mybatis才會(huì)自動(dòng)將相應(yīng)的值賦給resulttype指定的對象的屬性。
②當(dāng)提供的返回類型為resultmap時(shí),由于map不能很好地表示域模型,需要進(jìn)一步將其轉(zhuǎn)換為相應(yīng)的對象,這在復(fù)雜的查詢中往往非常有用。