解決mybatis報錯 There is no getter for property named ... in 'class java.lang.String'
阿新 • • 發佈:2018-12-19
發生這個的原因就是對於的屬性欄位沒有書寫正確,導致報錯。
這型別的報錯類似There is no getter for property named ... in 'classXXX。一個主要原因是在xml中進行引數配置的時候,引數名稱書寫錯誤。這個也是我遇到的問題。
為了避免這類問題,就要了解mybatis配置檔案中parameterType這個屬性。
這個屬性的值可以為:
1,簡單型別,int,Integer,String等
2,物件型別,User類
3,集合型別,Map,List等
針對上面的列子給出幾個簡單的demo。
a,簡單型別,
<select id="selectUsers" resultType="User" parameterType="int"> select id, username, password from users where id = #{id} </select>
這類簡單的資料型別可以不寫,類似下面這樣。
<select id="selectUsers" resultType="User">
select id, username, password
from users
where id = #{id}
</select>
b,物件型別,User是自己的一個實體類,包含id,username,password。
<insert id="insertUser" parameterType="User"> insert into users (id, username, password) values (#{id}, #{username}, #{password}) </insert>
c,這個比較複雜,分為兩種情況,一種是List集合型別,一種是Map型別。
如果是List,那麼直接使用foreach迴圈就可以了。
map的話,在傳遞引數的時候要注意,引數名稱和key值一定要對應。這一點我再之前的部落格裡說過,這裡不再贅述,有興趣的話可以看看,文章。
到這裡,對這種主要引數傳遞應該有了解了,為了避免出錯,在寫程式碼的時候要特別注意,引數和parameterType中傳遞的是否相同。如果不同,就會出現一些莫名的問題。
學無止境