1. 程式人生 > >mybatis 批量增加 Parameter '__frch_item_0' not found. Available parameters are [list]

mybatis 批量增加 Parameter '__frch_item_0' not found. Available parameters are [list]

當在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,所以也會出現這種情況

應該還有別的錯誤能夠導致這個錯誤。但是我就只遇到這幾種。所以做個總結