org.apache.ibatis.exceptions.PersistenceException:
###エラー照会データベース。原因:org.apache.ibatis.binding.BindingException:パラメーター'IDS'が見つかりません。利用可能なパラメータは、[コレクション、リスト]は
###原因:org.apache.ibatis.binding.BindingException:パラメーター「IDS」が見つかりません。利用可能なパラメータは、[コレクション、リスト]です
、コレクションをforeachループを使用してMyBatisのを学習すると、上記のエラーのような
インタフェースコード:
公共の一覧<従業員> getEmpsbyCondtionForeach(一覧<整数> IDS);
XMLコード:
<! - クエリ情報でよりIDのID ===(、2、3)- > < SELECT ID = "getEmpsbyCondtionForeach" resultTypeと= "EMP" > WHERE IDでtbl_employeeからSELECT * <! - コレクション:指定トラバースのセット: マップ内にカプセル化リストタイプの特定の治療パラメータは、キーマップがリストである 項目:現在の反復の要素を割り当て指定された変数の 分離:各要素の間にセパレータ 横断A:オープン文字をステッチすべての結果が始まる スプライシング文字の終わりのすべての結果横断:閉じる インデックス:インデックスを。リストはインデックスがインデックスである場合、アイテムが現在の値でトラバースされる キーマップは、マップこと項目値、トラバースマップインデックスを示している #{}変数名は、素子電流横断している変数の値を抽出することができます - > < foreachのコレクション= "ID" 項目= "ITEM_ID" セパレータ"" = オープン= "(" クローズ= ")" > #{ITEM_ID} </ foreachの> </ 選択を>
ソリューション:
修正mapper.java:
公共の一覧<従業員> getEmpsbyCondtionForeach(@Param( "IDS")一覧<整数> IDS);
または修正がmapper.xml:
<! - クエリ情報でよりIDのID ===(、2、3)- > < SELECT ID = "getEmpsbyCondtionForeach" resultTypeと= "EMP" > WHERE IDでtbl_employeeからSELECT * <! - コレクション:指定トラバースのセット: マップ内にカプセル化リストタイプの特定の治療パラメータは、キーマップがリストである 項目:現在の反復の要素を割り当て指定された変数の 分離:各要素の間にセパレータ 横断A:オープン文字をステッチすべての結果が始まる スプライシング文字の終わりのすべての結果横断:閉じる インデックス:インデックスを。リストはインデックスがインデックスである場合、アイテムが現在の値でトラバースされる キーマップは、マップこと項目値、トラバースマップインデックスを示している #{}変数名は、素子電流横断している変数の値を抽出することができます - > < foreachのコレクション= "リスト" 項目= "ITEM_ID" セパレータ"" = オープン= "(" クローズ= ")" > #{ITEM_ID} </ foreachの> </ 選択を>
理由:
Propertiesコレクションのforeachのタグは、さまざまな状況下で、この属性の値は、次の3つの場合がありますが、同じではありません。
1着信がある場合は、単一のパラメータとパラメータのタイプがリストである時、コレクション属性値リスト。
図2に示すように、入ってくる単一のパラメータと時間パラメータの型は、配列、プロパティ値の配列コレクションの配列である場合。
入ってくるパラメータが多い場合、図3に示すように、我々はもちろん、単一のパラメータとしてパッケージ化することができ、地図にそれらをパッケージ化する必要があります地図、実際には、あなたはまた、MyBatisの中でそれを入れている、入ってくるパラメータにしている場合地図にパッケージ化、マップがキーパラメータ名であるので、この時間は、コレクションプロパティの値は、マップ内の独自のパッケージにリストや配列のキーターゲットに渡されます。