以前没有使用mybatis,可以关闭自动提交,然后做sql操作,对操作进行catch捕获异常,

如果没有异常则commit 提交 ,有异常则 rollback 回滚,新增的数据则删除 ,修改的数据则修改回去,删除的则新增,

这就是事务操作。

  事务有四大特性

(1)原子性:要么全部执行成功,要么不执行。
(2)一致性:事务执行的结果,必须使数据库从一个一致性状态变到另一个一致性状态。
(3)隔离性:并发操作同一个表时数据库会开启多个事务,多个事务之间相互隔离。
(4)持久性:当事务确认完成后,对数据的改变是永久性的。

 

  那么mybatis怎么具体开启事务?

spring boot 开启其实很简单,使用注解开启即可,但是需要注意,需要触发非检查异常才会做事务回滚操作,【Exception 是检查异常】

但是如果使用try catch 捕获异常,也不会触发异常,因为异常被 吃下去了,做了服务降级操作,事务以为没有异常发生,因此不会触发回滚操作。

如果非要触发事务回滚,则需要在事务注解指定会触发事务回滚操作的异常类型,如果需要自定义抛出异常后反馈前端的数据,那么需要自定义异常,

自定义异常将会在下一随笔详细讲解。

经过测试总结:

(1)父级方法开启事务 @Transactional,父级发生异常,不仅父级会回滚,他调用的所有子方法都会回滚,也就是说,回滚事务父级可以影响所有子级.
(2)如果子级开了事务,父级没有开,发生异常,则仅仅让子级方法回滚,如果父级也开了事务,那么所有的子级将会和父级一起回滚。

2.操作

(1)提前配置好spring boot + mybatis 

目录结构

spring boot 使用 mybatis 开启事务回滚 的总结

 

 红色箭头的文件是必要的,

(2)导入依赖包

spring boot 使用 mybatis 开启事务回滚 的总结

 

 完整源码

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>cen.cloud</groupId>
        <artifactId>cen-mycloud</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>rabbitmq-producer-1004</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>rabbitmq-producer-1004</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>


        <!--eureka 注册中心依赖包 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>

        <!-- 消息中间件-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-amqp</artifactId>
            <version>2.1.6.RELEASE</version>
        </dependency>






        <!-- MySQL 依赖-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <!--            <scope>runtime</scope>-->
            <version>5.1.30</version>
        </dependency>
        <!--MySQL 数据源 依赖包-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.10</version>
        </dependency>

        <!--        mybatis依赖-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.2</version>
        </dependency>
        <!-- mybatis的逆向工程依赖包-->
        <dependency>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-core</artifactId>
            <version>1.3.2</version>
        </dependency>







    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>
View Code

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-01-12
  • 2022-12-23
  • 2021-09-08
  • 2022-12-23
  • 2021-07-29
  • 2021-12-21
猜你喜欢
  • 2021-06-30
  • 2023-02-05
  • 2022-01-29
  • 2021-10-25
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案