1. 程式人生 > >mybaits錯誤解決:There is no getter for property named 'id' in class 'java.lang.String'

mybaits錯誤解決:There is no getter for property named 'id' in class 'java.lang.String'

在使用mybaitis傳引數的時候,如果僅傳入一個型別為String的引數,那麼在 xml檔案中應該使用_parameter來代替引數名。

正確的寫法:

  1. <span style="font-size:18px;"> <!-- 用於查詢運單號是否存在 -->

  2. <select id="isCargoBillNoExist" resultType="java.lang.Integer">

  3. select count(1)

  4. from t_entry_cargo_receiver_info

  5. where 1=1

  6. <if test="_parameter != null" >

  7. and cargo_bill_no = #{_parameter,jdbcType=VARCHAR}

  8. </if>

  9. </select></span>

錯誤的寫法:

  1. <span style="font-size:18px;"> <!-- 用於查詢運單號是否存在 -->

  2. <select id="isCargoBillNoExist" resultType="java.lang.Integer">

  3. select count(1)

  4. from t_entry_cargo_receiver_info

  5. where 1=1

  6. <if test="id != null" >

  7. and cargo_bill_no = #{id,jdbcType=VARCHAR}

  8. </if>

  9. </select></span>

評論區有人提到:

也可以在mapper的介面中,給這個方法的引數加上@Param(value=“id”),這樣就能在.xml中使用#{id,jdbcType=VARCHAR} 了。

如:

public Object getObjById(@Param("id)String id);

這樣也是可以的。

===============分割線===============

不過本文提到的錯誤,在實踐中發現,並不都會出現。可能跟mybatis的版本有關係,就是說按照上文"錯誤"的寫法來寫,在某些版本中也是沒有問題的,不必糾結。

如果出現了標題的錯誤,按照文中的方式解決即可。