1、概述
MyBatis中在查詢進行select映射的時候,返回類型能夠用resultType,也能夠用resultMap,resultType是直接表示返回類型的,而resultMap則是對外部ResultMap的引用,可是resultType跟resultMap不能同時存在。
在MyBatis進行查詢映射時,其實查詢出來的每個屬性都是放在一個對應的Map裏面的,其中鍵是屬性名,值則是其對應的值。
①當提供的返回類型屬性是resultType時,MyBatis會將Map裏面的鍵值對取出賦給resultType所指定的對象對應的屬性。因此其實MyBatis的每個查詢映射的返回類型都是ResultMap,只是當提供的返回類型屬性是resultType的時候,MyBatis對自動的給把對應的值賦給resultType所指定對象的屬性。
②當提供的返回類型是resultMap時,由於Map不能很好表示領域模型,就須要本身再進一步的把它轉化爲對應的對象,這經常在複雜查詢中頗有做用。java
2、ResultType數據庫
Blog.javamybatis
其所對應的數據庫表中存儲有id、title、Content、Owner屬性。對象
MyBatis會自動建立一個ResultMap對象,而後基於查找出來的屬性名進行鍵值對封裝,而後再看到返回類型是Blog對象,再從ResultMap中取出與Blog對象對應的鍵值對進行賦值。blog
3、ResultMap
當返回類型直接是一個ResultMap的時候也是很是有用的,這主要用在進行復雜聯合查詢上,由於進行簡單查詢是沒有什麼必要的。先看看一個返回類型爲ResultMap的簡單查詢,再看看複雜查詢的用法。it
①簡單查詢的寫法class
select映射中resultMap的值是一個外部resultMap的id,表示返回結果映射到哪個resultMap上,外部resultMap的type屬性表示該resultMap的結果是一個什麼樣的類型,這裏是Blog類型,那麼MyBatis就會把它看成一個Blog對象取出。resultMap節點的子節點id是用於標識該對象的id的,而result子節點則是用於標識一些簡單屬性的,其中的Column屬性表示從數據庫中查詢的屬性,Property則表示查詢出來的屬性對應的值賦給實體對象的哪一個屬性。簡單查詢的resultMap的寫法就是這樣的。List