当前位置: 首页 > news >正文

Java MyBatis Plus手动事务提交方法

注意:TransactionCallbackWithoutResult是TransactionCallback的一个子类,用于没有返回值的情况。如果你需要返回值,可以使用TransactionCallback<T>。

方式二:使用DataSourceTransactionManager

这种方式更底层一些,直接使用事务管理器来获取事务状态,然后手动提交或回滚。

步骤:
a. 注入DataSourceTransactionManager
b. 使用TransactionDefinition定义事务属性(如隔离级别、传播行为等)
c. 获取事务状态(TransactionStatus)
d. 在try-catch块中执行操作,根据情况提交或回滚

示例代码:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.support.DefaultTransactionDefinition;@Service
public class YourService {@Autowiredprivate PlatformTransactionManager transactionManager;public void manualTransactionWithManager() {// 定义事务属性DefaultTransactionDefinition def = new DefaultTransactionDefinition();def.setIsolationLevel(TransactionDefinition.ISOLATION_READ_COMMITTED);def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);// 开启事务TransactionStatus status = transactionManager.getTransaction(def);try {// 这里执行你的数据库操作// yourMapper.insert(entity1);// yourMapper.update(entity2);// 操作成功,提交事务
            transactionManager.commit(status);} catch (Exception e) {// 发生异常,回滚事务
            transactionManager.rollback(status);throw e; // 可以选择抛出异常
        }}
}
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.support.DefaultTransactionDefinition;@Service
public class UserService {@Autowiredprivate PlatformTransactionManager transactionManager;@Autowiredprivate UserMapper userMapper;public void platformTransactionDemo() {// 定义事务属性DefaultTransactionDefinition def = new DefaultTransactionDefinition();def.setIsolationLevel(TransactionDefinition.ISOLATION_READ_COMMITTED);def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);// 开启事务TransactionStatus status = transactionManager.getTransaction(def);try {// 执行数据库操作User user = new User();user.setName("王五");userMapper.insert(user);// 业务逻辑...
            userMapper.updateById(user);// 手动提交事务
            transactionManager.commit(status);} catch (Exception e) {// 回滚事务
            transactionManager.rollback(status);throw e;}}
}

 

http://icebutterfly214.com/news/149482/

相关文章:

  • 2025涂塑钢管厂家推荐 产能专利环保三维度权威测评 - 爱采购寻源宝典
  • 2025 年 12 月发电机组厂家实力推荐:柴油 / 燃气 / 静音 / 移动拖车 / 集装箱式,上柴 / 玉柴 / 潍柴 / 康明斯适配之选 - 深度智识库
  • 2025重庆儿童抽动症医院推荐:口碑好、效果佳、服务优的5家优质医院汇总 - 品牌2026
  • 超微量核酸蛋白测定仪/全自动核酸蛋白测定仪专业生产厂家对比与选购指南 - 品牌推荐大师1
  • 设计模式(十八)命令模式 —— 将操作封装成对象,实现撤销、队列等扩展 - 实践
  • libuv 补充
  • iOS swift-markdown 自定文字颜色
  • 【计算机毕业设计案例】基于springboot的学生军训管理系统军训基础信息管理、学生军训管理、训练考核管理(程序+文档+讲解+定制)
  • CY3-尸胺(CY3-1,5-Diaminopentane)
  • 【计算机毕业设计案例】基于springboot的校园传统文化交流系统文化展示、互动交流、活动组织、资源共享(程序+文档+讲解+定制)
  • Java计算机毕设之基于springboot的校园传统文化交流系统强化传统文化与校园生活的融合(完整前后端代码+说明文档+LW,调试定制等)
  • Java毕设项目:基于springboot的学生军训管理系统(源码+文档,讲解、调试运行,定制等)
  • 模型压缩+算子优化全公开,Open-AutoGLM手机部署难点一次说清
  • Agent基础代码示例:单代理 vs 多代理、Agent Loop、Memory 机制
  • 【课程设计/毕业设计】基于springboot的校园传统文化交流系统传统技艺学习打卡、文化知识问答竞赛【附源码、数据库、万字文档】
  • 项目管理工具Kanass:轻量、简洁、开源、免费
  • 测试开发工程师的核心竞争力是什么?不是只会写脚本
  • 从功能测试到顶尖SDET的跃迁路径
  • 智能打气泵设计pcba方案开发
  • 2025年固定式卸货平台实力厂家权威推荐榜单:小剪叉升降平台/固定式剪叉升降平台/升降平台源头厂家精选 - 品牌推荐官
  • 2025年聚氨酯复合板实力厂家权威推荐榜单:金属压花保温装饰板/户外移动厕所墙板/外墙翻新改造材料源头厂家精选 - 品牌推荐官
  • 深度测评:主管护师考试哪家医考机构押题准? - 资讯焦点
  • 告别无效推广!2026 全年小红书营销 IP 新玩法 - Redbook_CD
  • 发酵罐怎么选?2025年三大高口碑品牌及多联发酵罐代表产品解析 - 品牌推荐大师1
  • 2025年优质排针推荐厂商排名:排针按需定制与来样定制专业企业全解析 - myqiye
  • 高手如何深度学习?
  • 网络流量监控工具iftop
  • Open-AutoGLM接口调用全解析,彻底解决模型延迟与超时问题
  • 2025年数码釉木纹砖品牌排行榜,新测评精选数码釉木纹砖公司推荐 - 工业推荐榜
  • 【Parallel-R1代码实现】sftv2