当前位置: 首页 > 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://www.jsqmd.com/news/139315/

相关文章:

  • 算力饱和打击:无人机蜂群的实时三维重建如何碾碎战场迷雾 - 品牌2025
  • UI框架-element-ui---图标管理和调用
  • 06 让用户输入信息
  • 最高年薪突破40万!从基础网管到安全工程师,Ta用行动证明:认知就是安全边界
  • 线程的互斥与同步
  • iOS架构演进终极指南:Kickstarter从Objective-C到Swift的完整迁移案例 - 教程
  • 深入解析:想建个人博客?Halo+cpolar 让新手也能轻松把文章发到公网
  • OpenWRT源码下载
  • 2025年包装袋厂家权威推荐:环保与本地化双轮驱动,谁在引领行业转型? - 深度智识库
  • 口碑好的企业展厅设计企业推荐:盛世笔特
  • 口碑好的企业展厅设计企业推荐:盛世笔特
  • DNS劫持全解析:原理、危害与防御实战指南
  • 如何开假医院诊断证明
  • 破壁单机桎梏:软硬协同解锁无人机集群的全域无死角、秒级定战场能力 - 品牌2025
  • 实用指南:Cocoa Hugo 主题安装与使用指南
  • 2025-2026年实验室粉碎机/液氮低温粉碎机推荐厂家/哪家质量好/口碑好/牌子好 - 品牌推荐大师1
  • 解锁显著小红书聚光效果,开启引流新征程
  • 你想学的黑客攻防技术都在这里了,一篇打包带走!
  • 靠谱的ProfiNet转CAN网关供应商推荐
  • 靠谱的ProfiNet转CAN网关供应商推荐
  • 2025商务与品质场景靠谱酱香型白酒厂家推荐 - 资讯焦点
  • 无界感知动态战场:无人机集群的实时智绘革命 - 品牌2025
  • xmascon25 部分题题解
  • 异构机群侦测无人机蜂群系统供应商推荐:构建智能低空防御体系 - 品牌2025
  • 工业品转型品牌全案策划咨询怎么做?奇正沐古给出建议 - 资讯焦点
  • 工业品转型品牌全案策划咨询怎么做?奇正沐古给出建议 - 资讯焦点
  • 2025年信誉好的腾讯广告专业服务商、实力强的腾讯广告服务商推荐
  • Z-Image Turbo 完整指南 2025:快速 AI 图像生成与 LoRA 训练
  • 2025年成都混凝土拆除/混凝土拆除/钻孔混凝土切割/业楼梯切割拆除/桥梁墙体钻孔切割服务商推荐 - 2025年品牌推荐榜
  • 可视化图解算法75:最长上升子序列(最长递增子序列)