resultType和resultMap功能相似 ,都是返回對象信息 ,可是resultMap要更強大一些 ,可自定義。由於resultMap要配置一下,表和類的一一對應關係,因此說就算你的字段名和你的實體類的屬性名不同也不要緊,都會給你映射出來,可是,resultType就比較雞肋了,必須字段名同樣,好比說 cId和c_id 這種的都不能映射 。下面介紹幾個經常使用的映射關係:java
單表查詢: resultMap:當使用resultMap作SQL語句返回結果類型處理時,一般須要在mapper.xml中定義resultMap進行pojo和相應表字段的對應。mybatis
<!-- 訂單查詢關聯用戶的resultMap 將整個查詢的結果映射到cn.itcast.mybatis.po.Orders中 --> <resultMap type="cn.itcast.mybatis.po.Orders" id="OrdersUserResultMap"> <!-- 配置映射的訂單信息 --> <!-- id:指定查詢列中的惟 一標識,訂單信息的中的惟 一標識,若是有多個列組成惟一標識,配置多個id column:訂單信息的惟 一標識 列 property:訂單信息的惟 一標識 列所映射到Orders中哪一個屬性 --> <id column="id" property="id"/> <result column="user_id" property="userId"/> <result column="number" property="number"/> <result column="createtime" property="createtime"/> <result column="note" property="note"/> </resultMap>
關聯查詢(一對一):resultMap對於一對一表鏈接的處理方式一般爲在主表的pojo中添加嵌套另外一個表的pojo,而後在mapper.xml中採用association節點元素進行對另外一個表的鏈接處理。例如app
<!-- 訂單查詢關聯用戶的resultMap 將整個查詢的結果映射到cn.itcast.mybatis.po.Orders中 --> <resultMap type="cn.itcast.mybatis.po.Orders" id="OrdersUserResultMap"> <!-- 配置映射的訂單信息 --> <!-- id:指定查詢列中的惟 一標識,訂單信息的中的惟 一標識,若是有多個列組成惟一標識,配置多個id column:訂單信息的惟 一標識 列 property:訂單信息的惟 一標識 列所映射到Orders中哪一個屬性 --> <id column="id" property="id"/> <result column="user_id" property="userId"/> <result column="number" property="number"/> <result column="createtime" property="createtime"/> <result column="note" property=note/> <!-- 配置映射的關聯的用戶信息 --> <!-- association:用於映射關聯查詢單個對象的信息 property:要將關聯查詢的用戶信息映射到Orders中哪一個屬性 --> <association property="user" javaType="cn.itcast.mybatis.po.User"> <!-- id:關聯查詢用戶的惟 一標識 column:指定惟 一標識用戶信息的列 javaType:映射到user的哪一個屬性 --> <id column="user_id" property="id"/> <result column="username" property="username"/> <result column="sex" property="sex"/> <result column="address" property="address"/> </association> </resultMap>
關聯查詢(一對多):resultMap的處理方式爲在訂單表數據的pojo中添加一個list,list中爲訂單明細表的屬性,在mapper.xml中採用以下的處理方式:ide
-- 訂單及訂單明細的resultMap 使用extends繼承,不用在中配置訂單信息和用戶信息的映射 --> <resultMap type="cn.itcast.mybatis.po.Orders" id="OrdersAndOrderDetailResultMap" extends="OrdersUserResultMap"> <!-- 訂單信息 --> <!-- 用戶信息 --> <!-- 使用extends繼承,不用在中配置訂單信息和用戶信息的映射 --> <!-- 訂單明細信息 一個訂單關聯查詢出了多條明細,要使用collection進行映射 collection:對關聯查詢到多條記錄映射到集合對象中 property:將關聯查詢到多條記錄映射到cn.itcast.mybatis.po.Orders哪一個屬性 ofType:指定映射到list集合屬性中pojo的類型 --> <collection property="orderdetails" ofType="cn.itcast.mybatis.po.Orderdetail"> <!-- id:訂單明細惟 一標識 property:要將訂單明細的惟 一標識 映射到cn.itcast.mybatis.po.Orderdetail的哪一個屬性 --> <id column="orderdetail_id" property="id"/> <result column="items_id" property="itemsId"/> <result column="items_num" property="itemsNum"/> <result column="orders_id" property="ordersId"/> </collection> </resultMap>