天天看點

mybatis 批量儲存注意事項

一:配置檔案如下:

<insert id="insertByList" parameterType="java.util.List" >
    insert into ec_custom_question (ID, VERSION, PAPER_ID, 
      QUESTION_ID, STATUS, CREATED_BY, 
      creation_date, LAST_UPDATED_BY, LAST_UPDATED_DATE, 
      ENABLED_FALG, ques_order, model_id
      )
    values 
    <foreach collection="list" item="item" index="index" separator=",">
    (#{item.id,jdbcType=INTEGER}, #{item.version,jdbcType=INTEGER}, #{item.paperId,jdbcType=INTEGER}, 
      #{item.questionId,jdbcType=INTEGER}, #{item.status,jdbcType=CHAR}, #{item.createdBy,jdbcType=INTEGER}, 
      #{item.creationDate,jdbcType=TIMESTAMP}, #{item.lastUpdatedBy,jdbcType=INTEGER}, #{item.lastUpdatedDate,jdbcType=TIMESTAMP}, 
      #{item.enabledFalg,jdbcType=CHAR}, #{item.quesOrder,jdbcType=INTEGER}, #{item.modelId,jdbcType=VARCHAR}
      )
      </foreach>
      <selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="ID">
      SELECT LAST_INSERT_ID();
      </selectKey>
  </insert>
           

注意:

1.檢視parameterType的類型是不是java.util.List類型,如果是的話,看foreach 的collection屬性是不是list,

 因為 傳遞一個 List 執行個體或者數組作為參數對象傳給 MyBatis,MyBatis 會自動将它包裝在一個 Map 中,用名稱在作為鍵。List 執行個體将會以“list” 作為鍵,而數組執行個體将會以“array”作為鍵 

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

3.還有就是我用Mybatis的時候,用mysql的值插入自動增長值,裡面的key我在資料庫中沒有設定自動增長,然後我又用了selectkey,是以也會出現這種情況

dao層直接傳遞list過來即可

繼續閱讀