發現問題
在mybatis的動態sql中最常見的錯誤就是使用,比如:_frch_item_0 not found
There is no getter for property named 'states' in 'class com.xingguo.model.User'
等等。
一般在使用時出現問題是由以下幾種錯誤使用方式造成的:
1.參數類型不是List,特別當參數為實體類,一個屬性為list時,注意collection的名字。
2.遍歷時屬性的名字或者字段錯誤
3.多個參數時沒有使用@param進行命名,在sql中順序混亂
下面從MySQL的源碼中看下對於list參數是如何解析的。
首先看到DefaultSqlSession.Java中的wrapCollection()
方法:
private Object wrapCollection(final Object object) { if (object instanceof Collection) { StrictMap<Object> map = new StrictMap<Object>(); map.put("collection", object); if (object instanceof List) { map.put("list", object); } return map; } else if (object != null && object.getClass().isArray()) { StrictMap<Object> map = new StrictMap<Object>(); map.put("array", object); return map; } return object; }
所以從上面可以看到中默認情況下寫的array和list,也就是collection默認的是array和list。
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如有疑問大家可以留言交流,謝謝大家對的支持。