@Transactional和@Transactional(rollack=Exception.class)
时间: 2023-11-15 10:00:41 浏览: 38
@Transactional是一个注解,用于标记一个方法或类需要在一个事务中运行。如果在方法或类中抛出了异常,那么事务将会回滚,以确保数据的一致性。如果不指定rollbackFor属性,那么事务只会在遇到RuntimeException的时候才会回滚。而如果指定了rollbackFor=Exception.class,那么事务将会在遇到非运行时异常时也回滚。
举个例子,如果一个类加上了@Transactional(rollbackFor=Exception.class)注解,那么这个类里面的方法抛出异常,就会回滚,数据库里面的数据也会回滚。
另外,引用中提到的Example是MyBatis逆向工程中生成的实例及实例对应的example,用于添加条件,相当于where后面的部分。
相关问题
@Transactional(rollbackFor = Exception.class) 和 @Transactional 区别
@Transactional注解是Spring框架中常用的事务注解,用于标记一个方法需要进行事务管理。其中,@Transactional(rollbackFor = Exception.class)表示当该方法中出现异常时,会回滚事务,即撤销之前的操作。而@Transactional则表示不指定回滚的异常类型,默认情况下只有RuntimeException及其子类会回滚事务。
举个例子,如果一个方法中有以下代码:
```
@Transactional(rollbackFor = Exception.class)
public void doSomething() throws Exception {
// some code
}
```
那么当该方法中出现Exception或其子类异常时,会回滚事务。
而如果将上述代码改为:
```
@Transactional
public void doSomething() throws Exception {
// some code
}
```
则默认只有RuntimeException及其子类异常时,会回滚事务。
@Transactional(rollbackFor = Exception.class)
@Transactional(rollbackFor = Exception.class)是Spring框架中的一个注解,用于标记一个方法或类需要进行事务管理。它的作用是在方法执行过程中,如果发生异常,则会回滚事务,将数据恢复到事务开始之前的状态。
该注解可以用于方法级别和类级别。在方法级别上使用时,只有被注解的方法发生异常时才会回滚事务;在类级别上使用时,类中的所有方法都会受到该注解的影响。
需要注意的是,@Transactional默认只回滚RuntimeException及其子类的异常,而不会回滚Exception及其子类的异常。如果需要回滚Exception异常,可以使用@Transactional(rollbackFor = Exception.class)来指定回滚的异常类型。
以下是一个使用@Transactional(rollbackFor = Exception.class)的示例:
```java
@Transactional(rollbackFor = Exception.class)
public void updateData() throws Exception {
// 更新数据的代码
// 如果发生异常,事务会回滚
}
```