美文网首页
Mybatis声明式事务

Mybatis声明式事务

作者: c_gentle | 来源:发表于2020-08-07 08:50 被阅读0次

一、声明式事务

1.声明式事务是指利用注解非侵入式实现事务提交与回滚的方法
2.使用方法:在方法或类上增加@Transactional,一般应用在Service上
3.触发时机:进入方法前开启事务,执行成功提交,抛出运行时异常回滚

二、声明式事务使用套路

  1. 在applicationContext中开启注解式声明式事务
 <!-- 事务管理器transactionManager提供了声明式事务的支持,在程序成功提交,运行时异常回滚 -->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
    </bean>
    <!-- 开启注解形式的声明式事务 -->
    <tx:annotation-driven transaction-manager="transactionManager"/>
  1. 利用@Transactional描述事务
@Service
//写在类上,默认所有方法应用声明式事务
@Transactional(rollbackFor = Exception.class)
public class GoodsService {
    @Resource
    private GoodsMapper goodsMapper;

    /*
    @Transactional 当方法执行成功时自动提交,抛出RuntimeException及其子类时自动回滚
    利用rollbackFor = Exception.class遇到所有类型异常都会滚
    */
    @Transactional(rollbackFor = Exception.class)
    public void initGoods() throws ParseException {
        for (int i = 1; i <= 10; i++) {
            if(i==3){

//                throw new ParseException("",1);
//                throw new RuntimeException("Fail");
            }
            Goods goods = new Goods();
            goods.setTitle("批量导入测试" + i);
            goods.setSubTitle("");
            goods.setOriginalCost(0f);
            goods.setCurrentPrice(0f);
            goods.setDiscount(0f);
            goods.setIsFreeDelivery(1);
            goods.setCategoryId(44);
            goodsMapper.insert(goods);
        }
    }
   
  1. 设置事务传播为PROPAGATION_NOT_SUPPORTED不使用事务
 /*不使用事务,方法注解优先级比类注解高*/
    @Transactional(propagation = Propagation.NOT_SUPPORTED , readOnly = true)
    public Goods findById(Integer goodsId) {
        return  goodsMapper.findById(goodsId);
    }
}

相关文章

  • Mybatis声明式事务

    一、声明式事务 1.声明式事务是指利用注解非侵入式实现事务提交与回滚的方法2.使用方法:在方法或类上增加@Tran...

  • spring事务(二) 声明式事务

    spring事务(二) 声明式事务 知识导读 声明式事务是对编程式事务的包装 声明式事务通过使用AOP来实现,注册...

  • Spring的事务传播行为

    前言 Spring同时支持编程事务策略和声明式事务策略,通常都推荐采用声明式事务策略。使用声明式事务策略的优势十分...

  • Spring的事务机制解析一

    一Spring事务的种类 1.声明式事务 2.编程式事务 二Spring事务的具体描述 (一)声明式事务 1.声明...

  • Spring事务——使用TransactionProxyFact

    Spring同时支持编程式事务策略和声明式事务策略,大部分时候,我们都推荐采用声明式事务策略。使用声明式事务策略的...

  • spring04

    Spring JdbcTemplate学习 Spring 声明式事务 xml配置实现 Spring 声明式事务 注...

  • Spring事务

    基础概念 ​ Spring中事务支持编程式事务和声明式事务。编程式事务由使用者自行编码控制事务;声明式事务则是...

  • 声明式事务

    编程式事务:由程序员编程事务控制代码声明式事务:事务控制代码已由Spring写好,程序员只需声明出哪些方法需要进行...

  • 声明式事务

    步骤 配置类 service Dao test

  • 声明式事务

    编程式事务:1.1 由程序员编程事务控制代码.1.2 OpenSessionInView 编程式事务 声明式事务:...

网友评论

      本文标题:Mybatis声明式事务

      本文链接:https://www.haomeiwen.com/subject/mzhtdktx.html