@Repository
public class SchemaRepository {
public SchemaRepository() {
}
public void createData1(DataSource dataSource) throws SQLException {
JdbcOperations jdbcOp = new JdbcTemplate(dataSource);
String sql = "INSERT INTO `t1` (`t1_id`, `name`) VALUES (1, 't1name1')";
PreparedStatementCreatorFactory statementCreatorFactory = new PreparedStatementCreatorFactory(sql);
statementCreatorFactory.setReturnGeneratedKeys(true);
PreparedStatementCreator creator = statementCreatorFactory.newPreparedStatementCreator(new Object[] {});
GeneratedKeyHolder keyHolder = new GeneratedKeyHolder();
jdbcOp.update(creator, keyHolder);
}
public void createData2(DataSource dataSource) throws SQLException {
JdbcOperations jdbcOp = new JdbcTemplate(dataSource);
String sql = "INSERT INTO `t1` (`t1_id`, `name`) VALUES (1, 't1name2')";
PreparedStatementCreatorFactory statementCreatorFactory = new PreparedStatementCreatorFactory(sql);
statementCreatorFactory.setReturnGeneratedKeys(true);
PreparedStatementCreator creator = statementCreatorFactory.newPreparedStatementCreator(new Object[] {});
GeneratedKeyHolder keyHolder = new GeneratedKeyHolder();
jdbcOp.update(creator, keyHolder);
}
}
@Service
public class SchemaService {
private SchemaRepository schemaRepository;
@Autowired
public SchemaService(SchemaRepository schemaRepository) {
this.schemaRepository = schemaRepository;
}
public void createData() throws SQLException {
DataSource dataSource = new DriverManagerDataSource("jdbc:mysql://localhost:3306/abc", "root", "root");
DataSourceTransactionManager transactionManager = new DataSourceTransactionManager(dataSource);
TransactionDefinition def = new DefaultTransactionDefinition();
TransactionStatus status = transactionManager.getTransaction(def);
try {
schemaRepository.createData1(dataSource);
schemaRepository.createData2(dataSource);
transactionManager.commit(status);
} catch (Exception e) {
e.printStackTrace();
transactionManager.rollback(status);
}
}
}Spring:完全通过程序控制Spring事务
最新推荐文章于 2025-04-18 16:01:49 发布
本文介绍了如何使用JdbcTemplate进行数据库操作,并通过DataSourceTransactionManager实现事务管理。重点展示了创建数据的具体步骤,包括设置数据源、创建数据操作服务以及执行SQL插入语句。
5862

被折叠的 条评论
为什么被折叠?



