Spring Boot整合Mybais与事务管理的注意事项

Spring Boot整合Mybatis与事务管理的注意事项

整合Mybatis

  1. 在pom.xml添加相关的jar包依赖
<!-- 加载mybatis整合springboot的依赖 -->
<dependency>
	<groupId>org.mybatis.spring.boot</groupId>
	<artifactId>mybatis-spring-boot-starter</artifactId>
	<version>1.3.1</version>
</dependency>

<!-- MySQL的jdbc驱动包 -->
<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
</dependency>
  1. 在配置文件中配置mysql的链接信息

  2. 在mapper类上面加上@Mapper 将其变成spring容器中的bean
    或者在运行入口添加@MapperScan(“com.mybatis.mapper”)注解进行扫描

  3. 如果将mapper.xml文件放到resources中,则需要在application.properties文件中加上mybatis.mapper-locations=classpath:mapper/*.xml进行指定文件位置

事务管理

  1. 在启动入口类中使用注解@EnableTransactionManagement 表示开启事务支持
  2. 在service方法上添加注解
  • @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
    • propagation 表示事务的规则

      • PROPAGATION_REQUIRED:如果存在一个事务,则支持当前事务。如果没有事务则开启。
      • PROPAGATION_SUPPORTS:如果存在一个事务,支持当前事务。如果没有事务,则非事务的执行。
      • PROPAGATION_MANDATORY:如果已经存在一个事务,支持当前事务。如果没有一个活动的事务,则抛出异常。
      • PROPAGATION_REQUIRES_NEW:总是开启一个新的事务。如果一个事务存在,则将这个存在的事务挂起。
      • PROPAGATION_NOT_SUPPORTED:总是非事务地执行,并挂起任何存在的事务。
      • PROPAGATION_NEVER:总是非事务地执行,如果存在一个活动事务,则抛出异常。
      • PROPAGATION_NESTED:如果一个活动的事务存在,则运行在一个嵌套的事务中,如果没有活动事务,则按TransactionDefinition.PROPAGATION_REQUIRED属性执行
    • 查询的注解
      @Transactional(readOnly = true,propagation= Propagation.NOT_SUPPORTED)
      此注解表示只读,没有事务

  • rollbackFor 回滚抛出异常
发布了9 篇原创文章 · 获赞 11 · 访问量 406

猜你喜欢

转载自blog.csdn.net/qq_41681399/article/details/105421763