注解mysql事物管理_Spring使用注解进行事务管理

一、在spring配置文件中加入命名空间

http://www.springframework.org/schema/beans/spring-beans-4.0.xsd

http://www.springframework.org/schema/tx

http://www.springframework.org/schema/tx/spring-tx.xsd">

二、spring配置文件

三、类或接口的顶部加注解

1.设置某个方法使用事务

在调用的方法上加上@Transactional注解(必须为public方法才行,不要捕捉异常,要让异常自动抛出,否则不能进行事务回滚。方法要写在服务层中在controller中无效)。

public class RoleServiceImpl implementsRoleService {

@Autowired

RoleDao daoImpl;

@Transactional//设置某个方法使用事务

public intadd(Role role) {

}

}

2.设置某个类的所有方法都使用事务

@Service

@Transactional//类中所有方法都使用事务

public class RoleServiceImpl implementsRoleService {

@Autowired

RoleDao daoImpl;

@Overridepublic intadd(Role role) {returndaoImpl.add(role);

}

@Override

@Transactional(propagation= Propagation.NOT_SUPPORTED)  //不使用事务

public ListqueryList() {returndaoImpl.queryList();

}

}

配置完成后可以在IDEA中看到,在spring配置文件左侧出现了一个m标识,点击可以跳转至配置事务的方法位置。

632bfba676db1a491dc1353f29153473.png

四、测试

如果没有使用事务,先添加角色,再人为制造一个异常。程序报异常后,数据库中任然插入了数据。

使用食物后,出现异常后,数据库就会回滚,不会插入数据。

@Override

@Transactionalpublic intadd(Role role) {int affectRows = daoImpl.add(role); //添加角色

int arr[] ={};

arr[10] = 0;returnaffectRows;

}

现在有一个需求,我的MySQL数据库主键(int类型)是自动增长,每次插入失败主键增长了但没有插入成功,下一次加入成功后会造成数据的主键不连续。目前上述事务处理方式并不能解决这个需求。

参考:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值