在IoC容器外部进行简单的Spring JDBC事务,可以通过以下步骤实现:
以下是一个简单的示例代码:
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.support.DefaultTransactionDefinition;
import org.springframework.transaction.support.TransactionCallback;
import org.springframework.transaction.support.TransactionTemplate;
public class TransactionExample {
public static void main(String[] args) {
// 创建DataSource实例
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/test");
dataSource.setUsername("username");
dataSource.setPassword("password");
// 创建JdbcTemplate实例
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
// 创建PlatformTransactionManager实例
PlatformTransactionManager transactionManager = new DataSourceTransactionManager(dataSource);
// 创建TransactionTemplate实例
TransactionTemplate transactionTemplate = new TransactionTemplate(transactionManager);
// 执行事务操作
transactionTemplate.execute(new TransactionCallback<Void>() {
@Override
public Void doInTransaction(TransactionStatus status) {
// 执行SQL语句
jdbcTemplate.update("INSERT INTO users (name, age) VALUES (?, ?)", "Tom", 20);
jdbcTemplate.update("INSERT INTO users (name, age) VALUES (?, ?)", "Jerry", 25);
// 如果需要回滚事务,可以调用status.setRollbackOnly()方法
// status.setRollbackOnly();
return null;
}
});
}
}
在这个示例中,我们使用DriverManagerDataSource作为DataSource实例,创建了一个JdbcTemplate实例,用于执行SQL语句。我们使用DataSourceTransactionManager作为PlatformTransactionManager实例,创建了一个TransactionTemplate实例,用于管理事务。在TransactionTemplate的execute方法中,执行了两个INSERT语句,如果需要回滚事务,可以调用status.setRollbackOnly()方法。
领取专属 10元无门槛券
手把手带您无忧上云