1. 程式人生 > >resultMap type型別 java.util.HashMap與pojo類的區別

resultMap type型別 java.util.HashMap與pojo類的區別

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>
<resultMap 
type="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"
> SELECT townid,townname FROM xxx WHERE id = #{id} </select>
利用.resultType:int,string ,long ,class 可以返回HashMap

假如需要結果對映修改欄位名的話

<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鎮'}]