程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> mybatis中foreach報錯:_frch_item_0 not found的解決方法

mybatis中foreach報錯:_frch_item_0 not found的解決方法

編輯:關於JAVA

發現問題

在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。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如有疑問大家可以留言交流,謝謝大家對的支持。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved