@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);
}
}
}