需求
查詢訂單信息,關(guān)聯(lián)查詢創(chuàng)建訂單的用戶信息
resultType
sql語句
確定查詢的主表,訂單表
確定查詢的關(guān)聯(lián)表,用戶表
SELECT orders.*,
`user`.username,
user.sex,
`user`.address
FROM orders,user where orders.user_id = user.id
創(chuàng)建pojo
將上邊sql查詢的結(jié)果映射到pojo上中,pojo中必須包括所有查詢列名
原始的Order.java不能映射全部字段,需要新創(chuàng)建的pojo。
創(chuàng)建一個(gè)pojo繼承包括查詢字段較多的po類

mapper.xml

mapper.java

測試代碼

resultMap
sql語句
確定查詢的主表,訂單表
確定查詢的關(guān)聯(lián)表,用戶表
SELECT orders.*,
user.username,
user.sex,
user.address
FROM orders,user where orders.user_id = user.id
使用resultMap映射的思路
使用resultMap將查詢結(jié)果中的訂單信息映射到Orders對象中,在Orders類中添加User屬性,將關(guān)聯(lián)查詢出來的用戶信息映射到Orders對象中User屬性中。
需要Orders類中添加user屬性:

resultMap配置

mapper.xml

mapper.java

測試代碼

resultType和resultMap實(shí)現(xiàn)一對一查詢小結(jié)
實(shí)現(xiàn)一對一查詢:
resultType:使用resultType實(shí)現(xiàn)較為簡單,如果pojo中沒有包括查詢出來的列名 ,需要增加列名對應(yīng)的屬性,即可完成映射。
如果沒有查詢結(jié)果的特殊要求建議使用resultType。
resultMap:需要單獨(dú)定義resultMap,實(shí)現(xiàn)有點(diǎn)麻煩,如果對查詢結(jié)果有特殊的要求,使用resultMap可以完成將關(guān)聯(lián)查詢映射pojo屬性中。
resultMap可以實(shí)現(xiàn)延遲加載,resultType無法實(shí)現(xiàn)延遲加載。