Mybatis声明式事务

简介: Mybatis声明式事务

一、声明式事务


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);
    }
}



相关文章
|
1月前
|
Java 数据库连接 数据库
spring复习05,spring整合mybatis,声明式事务
这篇文章详细介绍了如何在Spring框架中整合MyBatis以及如何配置声明式事务。主要内容包括:在Maven项目中添加依赖、创建实体类和Mapper接口、配置MyBatis核心配置文件和映射文件、配置数据源、创建sqlSessionFactory和sqlSessionTemplate、实现Mapper接口、配置声明式事务以及测试使用。此外,还解释了声明式事务的传播行为、隔离级别、只读提示和事务超时期间等概念。
spring复习05,spring整合mybatis,声明式事务
|
5月前
|
Java 关系型数据库 MySQL
【mybatis-plus】自定义多数据源,动态切换数据源事务失效问题
【mybatis-plus】自定义多数据源,动态切换数据源事务失效问题
【mybatis-plus】自定义多数据源,动态切换数据源事务失效问题
|
XML Java 数据库连接
java202304java学习笔记第六十五天-ssm-声明式控制-基于xml的声明式配置-mybatis的概述2
java202304java学习笔记第六十五天-ssm-声明式控制-基于xml的声明式配置-mybatis的概述2
50 0
|
5月前
|
Java 数据库连接 mybatis
一文彻底搞懂Mybatis系列(二)之mybatis事务管理机制深度剖析
一文彻底搞懂Mybatis系列(二)之mybatis事务管理机制深度剖析
678 0
|
5月前
|
XML Java 数据库连接
SpringBoot - 整合MyBatis配置版(XML)并开启事务
SpringBoot - 整合MyBatis配置版(XML)并开启事务
296 0
|
Java 测试技术 数据库连接
MyBatis基本用法 && 什么是自动化测试 && Spring事务和事务传播机制 && 性能测试概念和术语 && Loadrunner安装
MyBatis基本用法 && 什么是自动化测试 && Spring事务和事务传播机制 && 性能测试概念和术语 && Loadrunner安装
81 0
|
Java 数据库连接 mybatis
java202304java学习笔记第六十五天-ssm-声明式控制-mybatis映射文件
java202304java学习笔记第六十五天-ssm-声明式控制-mybatis映射文件
57 1
|
XML Java 数据库连接
2021-08-10基于注解配置AOP,银行取款初步后台搭建,spring事务处理,注解方式事务配置,spring+mybatis整合
2021-08-10基于注解配置AOP,银行取款初步后台搭建,spring事务处理,注解方式事务配置,spring+mybatis整合
360 1
|
XML Java 数据库连接
java202304java学习笔记第六十五天-ssm-声明式控制-基于xml的声明式配置-mybatis的概述1
java202304java学习笔记第六十五天-ssm-声明式控制-基于xml的声明式配置-mybatis的概述1
54 0