MyBatis伝Listパラメータneted exception is org.apache.ibatis.binding.BindingException

1687 ワード

MyBatisがListパラメータに入ったとき、MyBatisがエラーを報告しました.neted exception is org.apaache.ibatis.binding.BindingException:Parameeter'codeList'not found.以下は関連コードです.
Mapper.java--
void updateTeamNum(List codeList);
mapper.xml

		update pay_payee set team_num=COALESCE(team_num,0)+1
		where  code in
		
			#{code}
		
ソリューション:
Mapper.javaを修正します
void updateTeamNum(@Param("codeList") List codeList);
または
修正mapper.xml

		update pay_payee set team_num=COALESCE(team_num,0)+1
		where  code in
		
			#{code}
		
理由:
foreach元素の属性は主にitem、index、collection、open、separator、closeがあります.itemは、セット内の各要素が反復する時の別名を表し、indexは反復中の位置を表す名前を指定し、openはこの文が何で始まるかを表し、separatorは、反復の間にどの記号を区切り記号として使用するかを表し、closeは何で終わるかを表します.foreachを使う時に一番重要なのは間違いやすいのがcollection属性です.この属性は必ず指定しなければなりませんが、その属性の値は違っています.主に次の3つの状況があります. 
  • が単一パラメータであり、パラメータタイプがListである場合、collection属性値はlistである. .
  • が単一パラメータであり、パラメータタイプがarray配列である場合、collectionの属性値はarrayである. .
  • もし入ってきたパラメータが複数の場合、それらを一つのMapにパッケージする必要があります.もちろんシングルパラメータもmapにパッケージすることができます.実際にあなたがパラメータを入力した時、MyBatisの中にもMapにパッケージされます.mapのkeyはパラメータ名です.このときのcollection属性値は、入ってきたListまたはarrayオブジェクトが自分のパッケージのmapの中にあるkeyである.
  • 回転:https://www.cnblogs.com/caoyajun33-blog/p/6875169.html