天天看點

MyBatis查詢語句傳回結果類型為HashMap

假設有一張表為test

create table test(

   id number,

   name varchar2(80),

   age number

);

查詢語句是這樣的

<select id="getById" parameterType="string" resultType="hashmap">

   select name, age from test where id = #{id}

</select>

Mapper檔案定義如下:

public List<HashMap<String, String>> getById(String id);

假設傳回一條記錄

第一種情況

   其name字段值為NULL,age字段不為NULL,那麼程式接收到的List是這樣的:List[{AGE=20}],List的長度為1,這裡由于這條記錄的name字段為NULL,不被映射。

第二種情況

   name和age字段都為NULL,那麼傳回的List是這樣的:List[null],但是List的長度仍然為1,因為查詢到一條記錄,隻不過這條記錄的name和age字段為NULL,由于NULL是不被映射的,既然兩個字段都為NULL,于是這個HashMap便為null

   實驗結果表明,MyBatis查詢語句中,當傳回結果類型為HashMap時,若該記錄的所有字段值都為NULL,那麼該記錄映射的HashMap為null;若該記錄的所有字段值不全為NULL,那麼為NULL的字段将不被映射到HashMap中,不為空的字段将會被映射到HashMap中,并且字段名稱為key,字段值為value。

補充:oracle中空字元串就是NULL,而NULL在是不被映射到HashMap中的,所有不會出現這樣的List([{NAME=}])

本文轉自    手不要亂摸      51CTO部落格,原文連結:http://blog.51cto.com/5880861/1394591