問題代碼:
<select id="selectIstars" parameterType="java.lang.String" resultType="java.lang.String"> SELECT stars FROM book WHERE 1 = 1 <if test="id != null"> AND id = #{id,jdbcType=VARCHAR} </if> </select>
這是最終定位代碼出問題的地方,多次網上參考大致理解:
單個參數和多參數的判斷有個不同點,當我們的入參為實體類,或者map的時候,使用if 參數判斷沒任何問題。
但是當我們的入參為java.lang.Integer 或者 java.lang.String的時候,這時候就需要注意一些事情了
Integer類型的入參,加上這個就可以了
#{id,jdbcType=integer}
String類型的入參就有問題了,我同樣加上了
#{id,jdbcType=VARCHAR}
依舊報錯,最后把if判斷刪掉了,解決了問題,但是依舊困惑,有大佬懂的話,麻煩指點一下