Foreachは主に条件の構築に使用され、SQLステートメントのコレクションを反復することができます。 foreach要素の属性には、主にアイテム、インデックス、コレクション、オープン、セパレーター、およびクローズが含まれます。アイテムは、コレクション内の各要素が繰り返されるときのエイリアスを表します。インデックスは、反復プロセス中に各反復に到達する位置を表す名前を指定します。 Openは、ステートメントから始まるものを表し、セパレーターは各反復の間でセパレーターとして使用されるシンボルを表し、クローズは終了するものを表します。 Foreachを使用する際の最も重要で最もエラーが発生しやすいものは、コレクション属性です。この属性を指定する必要がありますが、さまざまな場合、属性の値は異なります。 3つの主な状況があります。
1.単一のパラメーターで渡され、パラメータータイプがリストである場合、コレクション属性値はリストです
2。単一のパラメーターで渡され、パラメータータイプが配列である場合、コレクションのプロパティ値は配列です
3.複数のパラメーターが渡された場合、それらをマップにカプセル化する必要があります。もちろん、単一のパラメーターをマップにカプセル化することもできます。実際、パラメーターを渡すと、それらを乳房のマップにカプセル化します。マップのキーはパラメーター名であるため、現時点では、コレクション属性値は、それ自体でカプセル化されたマップ内の渡されたリストまたは配列オブジェクトのキーです。
上記の3つの状況のコードの例を見てみましょう。
1。単一のパラメーターリストのタイプ:
<select id = "dynamicforeachtest" resulttype = "blog"> select * from t_blog in <foreach collection = "index" item = "item" open = "(" deparator = "、" close = ")"> {iteach> foreach> </select>上記のコレクションの値はリストであり、対応するマッパーはこのようなものです
パブリックリスト<Blog> dynamicforeachtest(list <integer> ids);
テストコード:
@testpublic void dynamicforeachtest(){sqlsession session = util.getsqlsessionfactory()。opensession(); blogmapper blogmapper = session.getmapper(blogmapper.class); list <integer> ids = new arrayList <integer>(); ids.add(1); ids.add(3); ids.add(6); list <blog> blogs = blogmapper.dynamicforeachtest(ids); for(blog blog:blogs)system.out.println(blog); session.close();}2。単一パラメーター配列のタイプ:
<select id = "dynamicforeach2test" resultType = "blog"> select * from t_blog in <foreach collection = "array" index = "item =" item "open ="( "separator ="、 "close =") "> {iteach} </foreach> </select>上記のコレクションは、対応するマッパーコードの配列です。
public List <blog> dynamicforeach2test(int [] ids);
対応するテストコード:
@testpublic void dynamicforeach2test(){sqlsession session = util.getsqlsessionfactory()。opensession(); blogmapper blogmapper = session.getmapper(blogmapper.class); int [] ids = new int [] {1,3,6,6,9}; blogmapper.dynamicforeach2test(ids); for(blog:blogs)system.out.println(blog); session.close();}3.パラメーターを自分でマップのタイプにカプセル化する
<select id = "dynamicforeach3test" resultType = "blog"> select * from t_blog from t_blog from "%"#{title} "%"とid in <foreach collection = "ids" item = "item" open = "(" deparator = "、" close = ")"> {ite上記のコレクションの値はIDSであり、これは渡されたパラメーターマップの鍵であり、対応するマッパーコード:
public List <blog> dynamicforeach3test(map <string、object> params);
対応するテストコード:
@testpublic void dynamicforeach3test(){sqlsession session = util.getsqlsessionfactory()。opensession(); blogmapper blogmapper = session.getmapper(blogmapper.class); final list <integer> ids = new arraylist <integer>(); ids.add(1); ids.add(2); ids.add(3); ids.add(6); ids.add(7); ids.add(9); map <string、object> params = new hashmap <string、object>(); blogs( blogmapper.dynamicforeach3test(params); for(blog:blogs)system.out.println(blog); session.close();}上記は、編集者によって紹介されたMybatisのForeachステートメントの詳細な説明に関する関連する知識です。それがあなたに役立つことを願っています!