mysql執行update語句受影響行數是0


mybatis連接mysql數據庫,發現同一個update執行多次,返回的int值都是1。

我記得同樣的update再次執行時 受影響行數是0。

后來發現,我之前一直用的SQLyog是這樣子的。

原來,不同的連接客戶端執行update給出的受影響行數不同。如下是navicat for mysql,JetBrains旗下的DataGrip, 小海豚 sqlyog。

 

對於再次返回0,網上的資料是,MySQL 為了提升性能,當它發現要執行的修改內容與數據庫中完全一致時,對它而言,此時修改是毫無意義的,反而會消耗一次執行修改的性能,於是它就不再做修改,因而受影響行數就是0。

 

至於mybatis,網上有說mybatis這個第三方持久化框架返回來的是被匹配的影響行數,所以返回的始終是1,那如果想要以返回的行數作為判斷結果,需要在db連接串里使用useAffectedRows=true,即

jdbc:mysql://127.0.0.1:3306/cn_appoint?characterEncoding=utf-8&useAffectedRows=true

 

經初步測試,並不起作用,始終返回的還是1。執行select version();查看mysql版本:5.6.29-mycat-1.6-RELEASE-20161028204710-------------------------->【2019-12-9 11:30】有網友回復,所以又測了一下,發現這個useAffectedRows=true是好使的,同樣的update,第一次執行返回1,第二次及之后執行時就會返回0。我是用SpringBoot集成baomidou的MybatisPlus測試的,mysql版本是5.7.28。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM