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

當在mybatis用到foreach的時候,會報這個錯誤Parameter '__frch_item_0' not found. Available parameters are [list]會出現的幾種解決方案java

例子mysql

 

[sql] view plaincopysql

  1.   <insert id="insertBatchPicAttachment"  parameterType="java.util.List">  
  2.        insert into pic_attachment   
  3.           (pic_id,pic_udid,relate_id,relate_code,relate_code_dtl,pic_name,pic_url,pic_remote_url)   
  4.        values  
  5.        <foreach collection="list"  item="item" index="index" separator=",">  
  6.           (#{item.picId},#{item.picUdid},#{item.relateId},#{item.relateCode},#{item.relateCodeDtl},#{item.picName},#{item.picUrl},#{item.picRemoteUrl})  
  7.        </foreach>      
  8.        <selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="picId">  
  9.             select LAST_INSERT_ID();  
  10.        </selectKey>   
  11.     </insert>  

 

 

1.查看parameterType的類型是否是Java.util.List類型,若是是的話,看foreach 的collection屬性是否是list,數據庫

    由於 傳遞一個 List 實例或者數組做爲參數對象傳給 MyBatis,MyBatis 會自動將它包裝在一個 Map 中,用名稱在做爲鍵。List 實例將會以「list」 做爲鍵,而數組實例將會以「array」做爲鍵 數組

2.看一下foreach裏面的值有沒有傳遞進來 mybatis

3.看foreach裏面的名稱字段是否寫錯 app

4.還有就是我用Mybatis的時候,用MySQL的值插入自動增加值,裏面的key我在數據庫中沒有設置自動增加,而後我又用了selectkey,因此也會出現這種狀況url

--------------------------------------------------------------------spa

還有一種狀況是item的屬性不對,我在使用通用Map的時候,發現此問題。.net

通用Map的好處是減小了對Bean的書寫,問題是若是數據庫的查詢結果爲Null,對應屬性的key也就不存在

相關文章
相關標籤/搜索