最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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é)調(diào)的呢?

  • 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此時早已把事務提交,也不會在方法結(jié)束時再一次提交了。

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

相關文章

  • 細致解讀希爾排序算法與相關的Java代碼實現(xiàn)

    細致解讀希爾排序算法與相關的Java代碼實現(xiàn)

    這篇文章主要介紹了希爾排序算法與相關的Java代碼實現(xiàn),希爾排序的時間復雜度根據(jù)步長序列的不同而不同,需要的朋友可以參考下
    2016-05-05
  • 詳解ThreadLocal為什么會內(nèi)存溢出原理

    詳解ThreadLocal為什么會內(nèi)存溢出原理

    這篇文章主要為大家介紹了ThreadLocal為什么會內(nèi)存溢出原理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01
  • 詳解Spring配置及事務的使用

    詳解Spring配置及事務的使用

    這篇文章主要介紹了詳解Spring配置及事務的使用,文中附含詳細的示例代碼說明,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-09-09
  • SpringBoot中properties,yml,yaml的區(qū)別及使用說明

    SpringBoot中properties,yml,yaml的區(qū)別及使用說明

    這篇文章主要介紹了SpringBoot中properties,yml,yaml的區(qū)別及使用說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • 詳解IDEA用maven創(chuàng)建springMVC項目和配置

    詳解IDEA用maven創(chuàng)建springMVC項目和配置

    本篇文章主要介紹了詳解IDEA用maven創(chuàng)建springMVC項目和配置 ,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • java清除html轉(zhuǎn)義字符

    java清除html轉(zhuǎn)義字符

    這篇文章主要介紹了一個靜態(tài)文件處理的一些便捷服務,包括 java清除html轉(zhuǎn)義字符,清除html代碼,從style樣式中讀取CSS的屬性,將字符串截取指定長度,涉及l(fā)og4j,common-lang類的學習
    2014-01-01
  • MyBatis框架搭建時依賴包引入異常的問題解決

    MyBatis框架搭建時依賴包引入異常的問題解決

    在使用IDEA環(huán)境搭建MyBatis框架時,可能會因為依賴包版本過低導致兼容性問題,本文就來介紹一下MyBatis框架搭建時依賴包引入異常的問題解決,感興趣的可以來了解一下
    2024-10-10
  • SpringBoot整合RocketMQ實現(xiàn)發(fā)送同步消息

    SpringBoot整合RocketMQ實現(xiàn)發(fā)送同步消息

    RocketMQ 是一款開源的分布式消息中間件,由阿里巴巴開源,它具有高可用性、高性能、低延遲等特點,廣泛應用于阿里巴巴集團內(nèi)部以及眾多外部企業(yè)的業(yè)務系統(tǒng)中,本文給大家介紹了SpringBoot整合RocketMQ實現(xiàn)發(fā)送同步消息,需要的朋友可以參考下
    2024-04-04
  • Spring MVC多種情況下進行文件上傳的實例

    Spring MVC多種情況下進行文件上傳的實例

    上傳是Web工程中很常見的功能,SpringMVC框架簡化了文件上傳的代碼,本文給大家總結(jié)了Spring MVC多種情況下進行文件上傳的實例,并通過代碼示例給大家介紹的非常詳細,需要的朋友可以參考下
    2024-02-02
  • 解析Java的Jackson庫中Streaming API的使用

    解析Java的Jackson庫中Streaming API的使用

    這篇文章主要介紹了解析Java的Jackson庫中Streaming API的使用,Jackson被用于Java對象和JSON的互相轉(zhuǎn)換,需要的朋友可以參考下
    2016-01-01

最新評論

奉化市| 临颍县| 安西县| 柳林县| 九台市| 大竹县| 兴国县| 兴海县| 分宜县| 额敏县| 福鼎市| 桃源县| 绿春县| 革吉县| 河北区| 房产| 邵武市| 德昌县| 大姚县| 澄江县| 砚山县| 大方县| 泌阳县| 绥芬河市| 嘉义县| 宝兴县| 山东省| 宁化县| 岳普湖县| 福泉市| 乌拉特中旗| 成安县| 宝兴县| 烟台市| 广宗县| 虹口区| 囊谦县| 寿光市| 永州市| 岫岩| 磴口县|