1. 程式人生 > >解決mybatis報錯 There is no getter for property named ... in 'class java.lang.String'

解決mybatis報錯 There is no getter for property named ... in 'class java.lang.String'

發生這個的原因就是對於的屬性欄位沒有書寫正確,導致報錯。

這型別的報錯類似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中傳遞的是否相同。如果不同,就會出現一些莫名的問題。

學無止境