Spring Boot實(shí)現(xiàn)事務(wù)特別特別簡(jiǎn)單,沒有多余操作,一個(gè)注解
@Transactional搞定
依賴的Jar包pom.xml
Spring Boot中實(shí)現(xiàn)事務(wù)沒有額外的Jar包,還是基本的數(shù)據(jù)庫(kù)訪問包,比如mybatis
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.13</version>
</dependency>
注解事務(wù)@Transactional
@Service
public class PersonService {
@Resource
private PersonMapper personMapper;
@Resource
private CompanyMapper companyMapper;
@Transactional(rollbackFor = {RuntimeException.class, Error.class})
public void saveOne(Person person) {
Company company = new Company();
company.setName("tenmao:" + person.getName());
companyMapper.insertOne(company);
personMapper.insertOne(person);
}
}
注解屬性
-
rollbackFor:觸發(fā)回滾的異常,默認(rèn)是RuntimeException和Error -
isolation: 事務(wù)的隔離級(jí)別,默認(rèn)是Isolation.DEFAULT也就是數(shù)據(jù)庫(kù)自身的默認(rèn)隔離級(jí)別,比如MySQL是ISOLATION_REPEATABLE_READ可重復(fù)讀
這樣就可以了,不需要其他配置。
ps:網(wǎng)絡(luò)上還說要在@SpringBootApplication上添加注解@EnableTransactionManagement,已經(jīng)不需要了