1. 程式人生 > >Mybatis總結一:resultType ,resultMap

Mybatis總結一:resultType ,resultMap

一 resultType

如果返回的只是物件,而不是物件的list


<sql id = "Base_Column">

    p.id,

    p.name,

    p.age,

    p.gender ,

</sql>
<select id="" resultType="類路徑" parameterType="xxx">

    select <include refid="Base_Column"> 

    from  t_people as p

    where id = #{id}

</select>


註解:這條sql語句。等價於


select 

    p.id,

    p.name,

    p.age,

    p.gender ,

    p.has_girl_friend as hasGirlFriend,

    from  t_people as p

    where id = #{id}

注意:

           1 <include .....>中的sql放在select語句中是一個完整的sql(當然你也可以直接將查詢的欄位放在 select 中),博主的意思是,如果你表用了別名,<include .../>不要忘記欄位前面加上 "別名.",不然報錯啦。

           2 <include .../>最後一個欄位別多加 "," ,博主以前總是被坑(細心)


二 resultMap

    如果返回的是一個實體類的list,就要用resultMap


<resultMap id="BaseMap" type="com.People">
   <result column="id" property="id"/> 
   <result column="name" property="name">
   <result column="has_girl_friend" property="hasGirlFriend">
</resultMap>
<select id="" parameterType="" resultMap="BaseMap">

    select <include refid="">

    from t_people

</select>

注意:

    1 resultMap中的column  一定要和表字段一樣,property 要和實體類的屬性一樣,<include ..../裡面的欄位也要和實體類的屬性名一樣。。

    2 不過是通過sql計算得到的還是直接查詢的欄位,實體類中一樣要有,因為他要將查到的資料對映到實體類中的欄位,不然控制檯就會報錯,初學者剛開始一定要弄清楚!


三 總結

    1 實際開發中,很多錯是因為 沒有和實體類欄位對上,一定要和實體類屬性對上!

    2 很多時候,程式碼裡丟擲NullPointException,有時候就是返回的物件或者list中,某些欄位為null,可以dubbg除錯。這種情況,就要好好查查你的sql了,欄位對應實體類的欄位。

    3 如果你as了一個實體類中不存在的屬性,也會報錯。

總之,按照總結1 來,細心。


由於水平有限,排版不熟練,請多多指教!