mybatis加Spring專案: 解決There is no getter for property named '***' in 'class java.lang.String'問題
阿新 • • 發佈:2019-02-06
使用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層的傳入引數名稱不用更改,直接與部署執行即可得到正確結果。