發現問題
在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。
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如有疑問大家可以留言交流,謝謝大家對的支持。