當在mybatis用到foreach的時候,會報這個錯誤Parameter '__frch_item_0' not found. Available parameters are [list]會出現的幾種解決方案
例子
- <insert id="insertBatchPicAttachment" parameterType="java.util.List">
- insert into pic_attachment
- (pic_id,pic_udid,relate_id,relate_code,relate_code_dtl,pic_name,pic_url,pic_remote_url)
- values
- <foreach collection="list" item="item" index="index" separator=",">
- (#{item.picId},#{item.picUdid},#{item.relateId},#{item.relateCode},#{item.relateCodeDtl},#{item.picName},#{item.picUrl},#{item.picRemoteUrl})
- </foreach>
- <selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="picId">
- select LAST_INSERT_ID();
- </selectKey>
- </insert>
1.查看parameterType的類型是不是Java.util.List類型,如果是的話,看foreach 的collection屬性是不是list,
因為 傳遞一個 List 實例或者數組作為參數對象傳給 MyBatis,MyBatis 會自動將它包裝在一個 Map 中,用名稱在作為鍵。List 實例將會以“list” 作為鍵,而數組實例將會以“array”作為鍵
2.看一下foreach里面的值有沒有傳遞進來
3.看foreach里面的名稱字段是否寫錯
4.還有就是我用Mybatis的時候,用MySQL的值插入自動增長值,里面的key我在數據庫中沒有設置自動增長,然后我又用了selectkey,所以也會出現這種情況
--------------------------------------------------------------------
還有一種情況是item的屬性不對,我在使用通用Map的時候,發現此問題。
通用Map的好處是減少了對Bean的書寫,問題是如果數據庫的查詢結果為Null,對應屬性的key也就不存在。
