天天看點

【Mybatis】——批量操作參數丢失部分資料

問題

      寫了一個批量更新的方法,而且是那種非常簡單的,如下

<update id="updateUserCode">
        <foreach collection="allusersEntityList" item="allusersEntity">
            update tc_allusers set user_code= #{allusersEntity.userCode} where id = #{allusersEntity.id};
        </foreach>
     </update>      

而且這個方法是先從資料庫中擷取資料,按一定規則修改某個值,再進行批量更新。本以為這個簡單的方法還不容易麼!可是就是需要磨練一下!

排查過程

從日志的情況分析,第二條資料就開始插入失敗,但看列印的sql沒有任何問題。

排查1 直接把列印的錯誤的sql換到控制台執行,結果影響行數0,說明列印的sql有問題。

排查2 把where後面的等于換成like 執行成功,證明id中資料不正确。

排查3 檢查查詢的資料,經測試查詢資料為正常。

排查4 更換字段進行更新,問題沒有得到解決。

排查5 更換批量更新為單條更新,資料可以成功更新。

解決方案

最後确定是批量更新造成問題。此時想起之前做項目的時候查過Mybatis本身不支援批量操作!但是要mybatis支援批量操作,需要在資料庫連接配接那一部配置設定置一個屬性,如圖中紅色部分。

【總結】