Spring模板:如何执行多个SQL语句?

时间:2014-02-25 23:23:30

标签: mysql sql spring transactions spring-jdbc

我想执行一些看起来像这样的SQL代码(在MySQL上)(它不是存储过程):

START TRANSACTION;  

INSERT...;
SELECT...;

COMMIT;

如何使用Spring模板进行操作? 当我尝试使用JdbcTemplate时,似乎Spring不理解查询。

使用Spring模板时,是否不允许从SQL代码启动事务?

使用Spring模板时,我可以在使用存储过程时从SQL代码启动事务吗?

1 个答案:

答案 0 :(得分:2)

看一下Spring TransactionTemplate,这是在使用JDBC模板时进行事务的最佳方式(参见official docs):

transactionTemplate.execute(new TransactionCallbackWithoutResult() {

  protected void doInTransactionWithoutResult(TransactionStatus status) {

      jdbcTemplate.update("INSERT INTO PERSON (FIRSTNAME, LASTNAME) VALUES(?,?)",
         new Object[] { firstName, lastName });

     ... multiple calls to JDBC template, all inside the same transaction ....
  }
});