Mybatis報錯attempted to return null from a method with a primitive return type (int)(已解決)

一、出現這個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);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章