resultMap type型別 java.util.HashMap與pojo類的區別
阿新 • • 發佈:2019-01-07
MyBatis的返回引數型別分兩種
1. 對應的分類為:
1.1.resultMap:
1.2.resultType:
2 .對應返回值型別:
2.1.resultMap:結果集
2.2.resultType:int,string ,long ,class 可以返回HashMap
1.resultMap 型別為 java.util.HashMap
xml
<select id="findTownList" resultMap="TownMap"> SELECT townid,townname xxx WHERE zoneid = #{zoneid} </select> <resultMaptype="java.util.HashMap" id="TownMap"> <result column="townid" property="townid"/> <result column="townname" property="townname"/> </resultMap>
Mapper
@Mapper public interface DivisionMapper {
public List<HashMap> findTownList(String id); }
注意為list
單元測試類
@Autowired xxMapper xxMapper; @Test public void findTownList() {
List<HashMap> townList = xxMapper.findTownList("02");System.out.println(townList);}
測試結果:[{townname=x鎮, townid=100}, {townname=xx鎮, townid=101}]
注意:這種放的優點 不需要POJO類,輸出結果沒有多餘欄位,資料庫欄位名與返回給前端的名字可以隨意對映,自由度高。
最後xml可以精簡為
<select id="findTownList" resultType="java.util.HashMap"利用.resultType:int,string ,long ,class 可以返回HashMap> SELECT townid,townname FROM xxx WHERE id = #{id} </select>
假如需要結果對映修改欄位名的話
<select id="findTownList" resultType="java.util.HashMap"> SELECT townid AS "TOWNid",townname FROM xxx WHERE zoneid = #{zoneid} </select>
利用sql語句的as來解決(最終方案比較簡單)
注意:利用mybatis 動態查詢一條記錄,而返回是一個map(resultType=”java.util.Map”,鍵是欄位名,值是欄位值),比如操作資料庫是通過儲存過程或者是直接傳一個String sql="select * from emp where e_id=1"字串來返回一個map。
如果某一列的值為空。查詢這條記錄時就不顯示這列了。《===map中無此對應的鍵
2.resultMap 型別為 POJO類
mapper
@Mapper public interface DivisionMapper { public List<Town> findTownList(String zoneid); }
xml
<select id="findTownList2" resultMap="TownMap2"> SELECT townid,townname FROM xx WHERE zoneid = #{zoneid} </select> <resultMap type="Town" id="TownMap2"> <result column="townid" property="townid"/> <result column="townname" property="townname"/> </resultMap> </mapper>
pojo類省略 重寫tostring()方法
測試類
List<Town> townList = xxMapper.findTownList2("50");結果
[Town{townid='101095001', townname='x鎮'}]