mybaits錯誤解決:There is no getter for property named 'id' in class 'java.lang.String'
在使用mybaitis傳引數的時候,如果僅傳入一個型別為String的引數,那麼在 xml檔案中應該使用_parameter來代替引數名。
正確的寫法:
-
<span style="font-size:18px;"> <!-- 用於查詢運單號是否存在 -->
-
<select id="isCargoBillNoExist" resultType="java.lang.Integer">
-
select count(1)
-
from t_entry_cargo_receiver_info
-
where 1=1
-
<if test="_parameter != null" >
-
and cargo_bill_no = #{_parameter,jdbcType=VARCHAR}
-
</if>
-
</select></span>
錯誤的寫法:
-
<span style="font-size:18px;"> <!-- 用於查詢運單號是否存在 -->
-
<select id="isCargoBillNoExist" resultType="java.lang.Integer">
-
select count(1)
-
from t_entry_cargo_receiver_info
-
where 1=1
-
<if test="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的版本有關係,就是說按照上文"錯誤"的寫法來寫,在某些版本中也是沒有問題的,不必糾結。
如果出現了標題的錯誤,按照文中的方式解決即可。