在Spring配置文件中添加DataSourceTransactionManager
,注入数据源
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
在Serivce类中,注入DataSourceTransactionManager
@Autowired
private DataSourceTransactionManager transactionManager;
在Service方法中,开启事务
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);
TransactionStatus status = transactionManager.getTransaction(def);
事务的提交与回滚
transactionManager.rollback(status);
transactionManager.commit(status);
开启事务后必须提交或回滚,否则会导致数据库死锁,后续操作超时。
Reference
Mysql事物锁等待超时 Lock wait timeout exceeded; try restarting transaction
ssm手动提交事务
发表评论