mybatis中foreachエラー:ufch_item_0 not foundの解決方法


問題を発見する
mybatisのダイナミックsqlの中で最も一般的なエラーは使用です。fch_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のソースコードからリストパラメータについてどう解析しますか?
まずDefault Sql Session.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と見られます。
締め括りをつける
以上はこの文章の全部の内容です。本文の内容は皆さんの学習や仕事に一定の助けをもたらすことを望んでいます。もし疑問があれば、メッセージを残して交流してください。ありがとうございます。