一、出現這個bug的原因
出現這個bug的原因是因爲MyBatis的Mapper.xml文件的查詢語句返回的結果是Integer類型,而在對應的接口裏面的方法裏返回參數的類型是int。如果這個查詢語句查詢出來的結果是null,則會報這個錯誤,最簡單的解決辦法就是返回值的類型統一用Integer類型,或者在sql語句裏面用ifnull()的函數,當查詢結果是null時,給個默認值0。
二、錯誤示範
如在mapper的配置文件中有一個sql查詢語句時這樣的:
<select id="testSelect" resultType="java.lang.Integer">
SELECT STATE FROM user WHERE USER_ID=#{userId,jdbcType=VARCHAR}
</select>
在對應的接口裏面的方法是這樣的:
int testSelect(@Param("userId") String userId);
如上所示,一個是Integer,一個是int,如果sql語句查詢出來的結果是null,那麼就會報這個錯誤。
三、如何修改
將上面接口的方法返回值改爲Integer類型即可:
Integer testSelect(@Param("userId") String userId);