問題場(chǎng)景:
db中表的主健采用了自增的方式
mybatis的配置如下:
但是在bean中并沒有定義id屬性虽另,導(dǎo)致報(bào)錯(cuò)org.apache.ibatis.executor.ExecutorException: No setter found for the keyProperty 'id'
解決辦法:
在配置中刪除keyProperty="id"的配置
原因:
主健采用了自增的方式只需要配置:useGeneratedKeys="true"
keyProperty="id"的意思是 將主鍵的中的數(shù)據(jù)?放到傳入對(duì)象的成員變量id里面拇砰,因?yàn)樵趯?duì)像的成員變量中沒有定義屬性id痛倚,也沒有定時(shí)id屬性的get疯潭,set方法掸绞,所以會(huì)報(bào)錯(cuò):org.apache.ibatis.executor.ExecutorException: No setter found for the keyProperty 'id'??
如果db的表中沒有指定主鍵:可以用屬性keyColumn
useGeneratedKeys=true,keyProperty="userId",keyColumn="user_id"
這個(gè)注解的意思就是统扳,使用數(shù)據(jù)庫自動(dòng)增長(zhǎng)的主鍵酝碳,并從table中user_id字段里面把數(shù)據(jù)放到傳入對(duì)象的成員變量userId里面捍歪。
如果我們已經(jīng)在數(shù)據(jù)庫表中指定了主鍵户辱,那么keyColumn屬性可以缺省。