1. 程式人生 > >mybatis加Spring專案: 解決There is no getter for property named '***' in 'class java.lang.String'問題

mybatis加Spring專案: 解決There is no getter for property named '***' in 'class java.lang.String'問題

使用mybatis對映mysql資料庫時,傳入引數為'status',執行報錯為:There is no getter for property named 'status' in 'class java.lang.String

使用'#'作為mybatis的對映標識執行可以通過,但是'#'不能實現SQL串的拼接,'$'符號是“替換”,可以實現SQL的拼接,用$替代#之後以為萬事大吉,執行時我們就會發現我們錯了!

對映配置檔案程式碼如下:

<select id="selectYLZ" resultMap="BaseResultMap" parameterType="java.lang.String">
    select 
    <include refid="Base_Column_List" />
    from tb_trunover_info where flag="A" and  STATUS in(${status})
    order by id ASC
  </select>


其他層中程式碼寫好DAO及Service釋出 執行之後出現如下錯誤:

經查詢原因後發現不能將引數設為bean裡的名稱,如果傳入型別為String型別,則引數需統一修改為 '_parameter',修改後的sql語句如下(不管你的引數是什麼,都要改成"_parameter",否則會出錯,)

更改之後的mybatis配置xml檔案程式碼片段如下:

  <select id="selectYLZ" resultMap="BaseResultMap" parameterType="java.lang.String">
    select 
    <include refid="Base_Column_List" />
    from tb_trunover_info where flag="A" and  STATUS in(${_parameter})
    order by id ASC
  </select>


DAO層的傳入引數名稱不用更改,直接與部署執行即可得到正確結果。