千家信息网

mybatis怎么使用truncate清空表

发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,小编给大家分享一下mybatis怎么使用truncate清空表,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!使用truncate清空表Mapper接口void truncateTab
千家信息网最后更新 2026年11月04日mybatis怎么使用truncate清空表

小编给大家分享一下mybatis怎么使用truncate清空表,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

使用truncate清空表

Mapper接口

void truncateTable();

XML文件

      TRUNCATE TABLE 表名  

注意:是标签,不是标签

事务方法中使用truncate会发生什么

场景

在一个spring项目的事务方法中(使用@transactional注解):

  • 首先执行一个delete语句;

  • 然后执行一个truncate语句;

  • 最后再执行一个insert语句;

问题

为什么delete语句和truncate语句执行成功,但insert语句虽然执行了,却没有提交?

解释

首先,在没有事务注解的方法中,一切与数据库的交互都是由mybatis处理的,

而mybatis默认是事务自动提交的,也就是每条sql语句执行完后会立即提交。

在添加事务注解后,应用与数据库的交互会由spring和mybatis共同处理(所以它们要共用同一个数据源):

spring管理事务,mybatis负责具体sql的执行。

那它们是如何协调的呢?

spring首先会在一开始创建连接开启事务,同时将连接放进当前线程(threadlocal);

mybatis执行sql语句时会从当前线程获取连接——这样就保证了spring和mybatis使用的是同一个连接;

mybatis执行sql后,会检查方法上是否有事务注解,如果有的话就不执行commit语句;

最后由spring执行commit。

这也就解释了一开始的问题:

执行完truncate后,当前事务已被提交(truncate虽然性能比delete好,但它是DDL语句,会触发事务提交),后续执行sql时,由于mybatis检测到事务注解所以不会提交

而spring此时早已把事务提交,也不会在方法结束时再一次提交了。

看完了这篇文章,相信你对"mybatis怎么使用truncate清空表"有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!

事务 语句 方法 注解 数据 数据库 标签 篇文章 线程 问题 处理 解释 成功 也就是 同时 场景 完了 性能 接口 数据源 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广东猪兼强互联网科技有限公司 互联网金融监管科技数据 工业互联网科技新基建 互联网金融 金融科技 互联网科技英文 互联网女皇 腾讯科技 互联网科技公司名称 互联网 科技服务平台 以后互联网后是啥科技 互联网科技与大数据专业 玉溪新华互联网科技好不好 卓翼科技产业互联网合作 为客找房互联网科技公司怎么样 科技互联网的核心竞争力 陕西云淼互联网科技公司 南京一网一红互联网科技有限公司 上海万顺科技互联网有限公司招聘 互联网科技手抄报图片 马化腾互联网科技教学 现代科技的标志之一的互联网 互联网与科技 互联网和科技创新 深圳天众互联网科技公司 万达互联网科技 互联网金融科技公司干啥的 世界互联网科技公司市值排名 昊天互联网科技有限公司 国产互联网科技公司 马化腾互联网科技教学 互联网科技创新方面的资料
0