首页 > 作文

mybatis如何使用truncate清空表

更新时间:2023-04-06 02:58:47 阅读: 评论:0

使用truncate清空表

mapper接口

trained

xml文件

注意:是<update>标签,不是<delete>标签

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

场景

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

首先执行一个delete语句;然后执行一个truncate语句;最后再执行一个inrt语句;

问题

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

解释

首先,在没有事务注解的扬州文化艺术学校方法中,一切与数据库的交互都是由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此时早已把事务提交,也不会在方法结束时再一次提交了。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持www.887551.com。

本文发布于:2023-04-06 02:58:46,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/138284fd87ce0a96c755397da64603fe.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:mybatis如何使用truncate清空表.doc

本文 PDF 下载地址:mybatis如何使用truncate清空表.pdf

标签:语句   事务   注解   方法
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图