Mybatis問題:There is no getter for property named 'xxxxx' in 'class java.lang.String'

Mybatis問題:There is no getter for property named 'userName' in 'class java.lang.String'

Mybatis遇到的問題

問題:

複製代碼

Caused by: org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'userName' in 'class java.lang.String'
    
複製代碼

分析:

那麼什麼情況下會發生“There is no getter for property named in ‘class

java.lang.String’”錯誤呢?

其實是在這種情況下:

複製代碼
    <select id="findByUserName" resultMap="BaseResultMap" parameterType="String">
     <if test="userName != null">
            and userName = #{userName} 
        </if>
複製代碼

注意看,是在if test=驗證的時候發生的 “There is no getter for property named in ‘class java.lang.String’”,

而並非是and userName = #{userName} 的時候發生的錯誤。

解決辦法:

複製代碼
  <select id="findByUserName" resultMap="BaseResultMap" parameterType="String">
        <if test="_parameter != null">
            and userName = #{userName} 
        </if>
複製代碼

原因:Mybatis默認採用ONGL解析參數,所以會自動採用對象樹的形式取

string.xxx 值,如果沒在在方法中定義,則會拋異常報錯。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章