1. 程式人生 > >在使用mybaitis傳引數的時候,僅傳入一個型別為String的引數所遇到的問題

在使用mybaitis傳引數的時候,僅傳入一個型別為String的引數所遇到的問題

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

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

正確的寫法:

  1. <spanstyle="font-size:18px;"><!-- 用於查詢運單號是否存在 -->
  2.     <selectid="isCargoBillNoExist"resultType="java.lang.Integer">
  3.         select count(1)  
  4.         from t_entry_cargo_receiver_info  
  5.         where 1=1
  6.         <iftest="_parameter != null">
  7.         and cargo_bill_no = #{_parameter,jdbcType=VARCHAR}  
  8.         </if>
  9.     </select></span>
錯誤的寫法:
  1. <spanstyle="font-size:18px;"><!-- 用於查詢運單號是否存在 -->
  2.     <selectid="isCargoBillNoExist"
    resultType="java.lang.Integer">
  3.         select count(1)  
  4.         from t_entry_cargo_receiver_info  
  5.         where 1=1
  6.         <iftest="id != null">
  7.         and cargo_bill_no = #{id,jdbcType=VARCHAR}  
  8.         </if>
  9.     </select></span>

評論區有人提到:

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

如:

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


這樣也是可以的。

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

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

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