問題
寫了一個批量更新的方法,而且是那種非常簡單的,如下
<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支援批量操作,需要在資料庫連接配接那一部配置設定置一個屬性,如圖中紅色部分。