亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

mybatis如何使用truncate清空表

 更新時間:2022年03月11日 15:43:19   作者:攻城日記  
這篇文章主要介紹了mybatis如何使用truncate清空表,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

使用truncate清空表

Mapper接口

void truncateTable();

XML文件

? <update id="truncateTable" >
? ? TRUNCATE TABLE 表名
? </update>

注意:是<update>標簽,不是<delete>標簽

事務方法中使用truncate會發(fā)生什么

場景

在一個spring項目的事務方法中(使用@transactional注解):

  • 首先執(zhí)行一個delete語句;
  • 然后執(zhí)行一個truncate語句;
  • 最后再執(zhí)行一個insert語句;

問題

為什么delete語句和truncate語句執(zhí)行成功,但insert語句雖然執(zhí)行了,卻沒有提交?

解釋

首先,在沒有事務注解的方法中,一切與數(shù)據(jù)庫的交互都是由mybatis處理的,

而mybatis默認是事務自動提交的,也就是每條sql語句執(zhí)行完后會立即提交。

在添加事務注解后,應用與數(shù)據(jù)庫的交互會由spring和mybatis共同處理(所以它們要共用同一個數(shù)據(jù)源):

spring管理事務,mybatis負責具體sql的執(zhí)行。

那它們是如何協(xié)調的呢?

  • spring首先會在一開始創(chuàng)建連接開啟事務,同時將連接放進當前線程(threadlocal);
  • mybatis執(zhí)行sql語句時會從當前線程獲取連接——這樣就保證了spring和mybatis使用的是同一個連接;
  • mybatis執(zhí)行sql后,會檢查方法上是否有事務注解,如果有的話就不執(zhí)行commit語句;

最后由spring執(zhí)行commit。

這也就解釋了一開始的問題:

執(zhí)行完truncate后,當前事務已被提交(truncate雖然性能比delete好,但它是DDL語句,會觸發(fā)事務提交),后續(xù)執(zhí)行sql時,由于mybatis檢測到事務注解所以不會提交

而spring此時早已把事務提交,也不會在方法結束時再一次提交了。

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • java編寫冒泡排序的完整示例

    java編寫冒泡排序的完整示例

    這篇文章主要給大家介紹了關于java編寫冒泡排序的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • JVM用寄存器實現(xiàn)程序計數(shù)

    JVM用寄存器實現(xiàn)程序計數(shù)

    這篇文章主要介紹了JVM用寄存器實現(xiàn)程序計數(shù),JVM中的程序計數(shù)寄存器(Program Counter Register),Register的命名源于CPU的寄存器,寄存器存儲指令相關的現(xiàn)場信息。CPU只有把數(shù)據(jù)裝載到寄存器才能夠運行
    2023-02-02
  • springboot+vue實現(xiàn)七牛云頭像的上傳

    springboot+vue實現(xiàn)七牛云頭像的上傳

    本文將介紹如何在Spring Boot項目中利用七牛云進行圖片上傳并將圖片存儲在云存儲中,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-08-08
  • Springboot使用cache緩存過程代碼實例

    Springboot使用cache緩存過程代碼實例

    這篇文章主要介紹了Springboot使用cache緩存過程代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-06-06
  • JAVA 實現(xiàn)磁盤文件加解密操作的示例代碼

    JAVA 實現(xiàn)磁盤文件加解密操作的示例代碼

    這篇文章主要介紹了JAVA 實現(xiàn)磁盤文件加解密操作的示例代碼,幫助大家利用Java實現(xiàn)文件的加解密,感興趣的朋友可以了解下
    2020-09-09
  • eclipse如何搭建Springboot項目詳解

    eclipse如何搭建Springboot項目詳解

    今天帶大家學習eclipse如何搭建Spring boot項目,文中有非常詳細的圖文解說,對正在學習java的小伙伴們有很好地幫助,需要的朋友可以參考下
    2021-05-05
  • RabbitMQ消息單獨與批量的TTL詳細介紹

    RabbitMQ消息單獨與批量的TTL詳細介紹

    這篇文章主要介紹了RabbitMQ消息單獨與批量的TTL,TTL全名是Time To Live存活時間,表示當消息由生產(chǎn)端存入MQ當中的存活時間,當時間到達的時候還未被消息就會被自動清除,感興趣的同學可以參考下文
    2023-05-05
  • Java中LinkedHashSet的實現(xiàn)原理詳解

    Java中LinkedHashSet的實現(xiàn)原理詳解

    這篇文章主要介紹了Java中LinkedHasSet的實現(xiàn)原理詳解,LinkedHashSet?是具有可預知迭代順序的?Set?接口的哈希表和鏈接列表實現(xiàn),此實現(xiàn)與HashSet?的不同之處在于,后者維護著一個運行于所有條目的雙重鏈接列表,需要的朋友可以參考下
    2023-09-09
  • Java利用POI實現(xiàn)導入導出Excel表格

    Java利用POI實現(xiàn)導入導出Excel表格

    這篇文章主要為大家詳細介紹了Java利用POI實現(xiàn)導入導出Excel表格,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • java實現(xiàn)自動回復聊天機器人

    java實現(xiàn)自動回復聊天機器人

    這篇文章主要為大家詳細介紹了java實現(xiàn)自動回復聊天機器人,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-08-08

最新評論