mybatis輸出對映(resultType 和 resultMap)
輸出對映
mybatis中的輸出對映有兩個:resultType 和 resultMap。依據不同情況,選擇不同的輸出對映。
resultType
使用resultType進行輸出對映,只有查詢出來的列名和pojo中的屬性名一致,該列才可以對映成功。
如果查詢出來的列名和pojo中的屬性名全部不一致,沒有建立pojo物件。
只要查詢出來的列名和pojo中的屬性有一個一致,就會建立pojo物件。
查詢出來的結果集只有一行且一列,可以使用簡單型別進行輸出對映。
輸出pojo物件和pojo列表:
不管是輸出的pojo單個物件還是一個列表(list中包括pojo),在mapper.xml中resultType指定的型別是一樣的
在mapper.java指定的方法返回值型別不一樣:
1、輸出單個pojo物件,方法返回值是單個物件型別
2、輸出pojo物件list,方法返回值是List<Pojo>
生成的動態代理物件中是根據mapper方法的返回值型別確定是呼叫selectOne(返回單個物件呼叫)還是selectList (返回集合物件呼叫 ).
resultMap
mybatis中使用resultMap完成高階輸出結果對映。
resultMap使用方法:如果查詢出來的列名和pojo的屬性名不一致,通過定義一個resultMap對列名和pojo屬性名之間作一個對映關係。
1、定義resultMap
2、使用resultMap作為statement的輸出對映型別
將下邊的sql使用User完成對映
SELECT id id_, username username_ FROM USER WHERE id = #{value}
User類中屬性名和上邊查詢列名不一致。
- 定義reusltMap
使用resultMap作為statement的輸出對映型別
mapper.java
測試
小結
使用resultType進行輸出對映,只有查詢出來的列名和pojo中的屬性名一致,該列才可以對映成功。
如果查詢出來的列名和pojo的屬性名不一致,通過定義一個resultMap