亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

JAVA MyBatis批量操作(插入)時異常

JAVA MyBatis批量操作(插入)時異常

江戶川亂折騰 2019-03-22 10:15:15
傳入為 List<Object> 確定為不為空org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.BindingException: Parameter '__frch_item_0' not found.<insert id="batchInsert">    insert into    personal_tag(type, tag, create_time, open_account_id)    values    <foreach collection="list" item="item" separator=",">        (#{item.type,jdbcType=INTEGER},        #{item.tag,jdbcType=VARCHAR},        #{item.createTme,jdbcType=TIMESTAMP},        #{item.openAccountId,jdbcType=BIGINT})    </foreach>ON DUPLICATE KEY UPDATE tag=tag</insert>代碼如上....確定傳入值不為空忘記補充,我的項目里其他地方也有批量插入的代碼 , 類似于這個 全部都是正確執行的mybatis ver : 3.3.0
查看完整描述

5 回答

?
夢里花落0921

TA貢獻1772條經驗 獲得超6個贊

此問 關閉 題主沒有找到任何答案 靠升級mybatis版本后解決此問題


查看完整回答
反對 回復 2019-04-25
?
繁星coding

TA貢獻1797條經驗 獲得超4個贊

在list和數組中,index是元素的序號,在map中,index是元素的key,該參數可選。


<insert id="batchInsert">

    insert into

    personal_tag(type, tag, create_time, open_account_id)

    values

    <foreach collection="list" item="item" index="index" separator=",">

        (#{item.type,jdbcType=INTEGER},

        #{item.tag,jdbcType=VARCHAR},

        #{item.createTme,jdbcType=TIMESTAMP},

        #{item.openAccountId,jdbcType=BIGINT})

    </foreach>ON DUPLICATE KEY UPDATE tag=tag


查看完整回答
反對 回復 2019-04-25
?
慕沐林林

TA貢獻2016條經驗 獲得超9個贊

ON DUPLICATE KEY UPDATE tag=tag
把這一句改為
ON DUPLICATE KEY UPDATE tag=#{item.tag}

查看完整回答
反對 回復 2019-04-25
?
蝴蝶刀刀

TA貢獻1801條經驗 獲得超8個贊

BindingException,那么一定是Mybatis遍歷你Collections的時候,有個對象取不到item屬性,也許你放了一個null對象,請檢查你的List<Object>


查看完整回答
反對 回復 2019-04-25
?
翻翻過去那場雪

TA貢獻2065條經驗 獲得超14個贊

<insert id="batchInsert" parameterType="java.util.List">

    insert into

    personal_tag(type, tag, create_time, open_account_id)

    values

    <foreach collection="list" item="item" separator=",">

        (#{item.type,jdbcType=INTEGER},

        #{item.tag,jdbcType=VARCHAR},

        #{item.createTme,jdbcType=TIMESTAMP},

        #{item.openAccountId,jdbcType=BIGINT})

    </foreach>ON DUPLICATE KEY UPDATE tag=tag

</insert>


在insert標簽加參數類型呢



修改下參數別名呢,還有接口的參數名,下面是我們之前的項目里的

void addRiskItemBatch(@Param("lstItem")List<FastRiskItemInfo> lstItem);


<!-- 批量添加條款 -->

<insert id="addRiskItemBatch" useGeneratedKeys="true" parameterType="java.util.List">  

    <selectKey resultType="long" keyProperty="id" order="AFTER">  

        SELECT  

        LAST_INSERT_ID()  

    </selectKey>

    insert into fast_risk_item_info (query_id, risk_item_id, 

      item_no, item_name, item_price, 

      status, create_time)

    values  

    <foreach collection="lstItem" item="item" index="index" separator="," >  

        (#{item.queryId,jdbcType=INTEGER}, #{item.riskItemId,jdbcType=INTEGER}, 

      #{item.itemNo,jdbcType=VARCHAR}, #{item.itemName,jdbcType=VARCHAR}, #                       {item.itemPrice,jdbcType=DECIMAL}, 

      #{item.status,jdbcType=INTEGER}, #{item.createTime,jdbcType=VARCHAR})

    </foreach>  

   </insert>


查看完整回答
反對 回復 2019-04-25
  • 5 回答
  • 0 關注
  • 2154 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號