在使用mybaitis傳引數的時候,僅傳入一個型別為String的引數所遇到的問題
阿新 • • 發佈:2019-01-08
mybaits錯誤解決:There is no getter for property named 'id' in class 'java.lang.String'
在使用mybaitis傳引數的時候,如果僅傳入一個型別為String的引數,那麼在 xml檔案中應該使用_parameter來代替引數名。
正確的寫法:
- <spanstyle="font-size:18px;"><!-- 用於查詢運單號是否存在 -->
- <selectid="isCargoBillNoExist"resultType="java.lang.Integer">
- select count(1)
- from t_entry_cargo_receiver_info
- where 1=1
- <iftest="_parameter != null">
- and cargo_bill_no = #{_parameter,jdbcType=VARCHAR}
- </if>
- </select></span>
- <spanstyle="font-size:18px;"><!-- 用於查詢運單號是否存在 -->
- <selectid="isCargoBillNoExist"
- select count(1)
- from t_entry_cargo_receiver_info
- where 1=1
- <iftest="id != null">
- and cargo_bill_no = #{id,jdbcType=VARCHAR}
- </if>
- </select></span>
評論區有人提到:
也可以在mapper的介面中,給這個方法的引數加上@Param(value=“id”),這樣就能在.xml中使用#{id,jdbcType=VARCHAR} 了。
如:
- public Object getObjById(@Param("id)String id);
這樣也是可以的。
===============分割線===============
不過本文提到的錯誤,在實踐中發現,並不都會出現。可能跟mybatis的版本有關係,就是說按照上文"錯誤"的寫法來寫,在某些版本中也是沒有問題的,不必糾結。
如果出現了標題的錯誤,按照文中的方式解決即可。