在jdbcTemplate或DataSource上提交 [英] Commit on jdbcTemplate or DataSource
问题描述
我想使用jdbcTemplate进行提交和回滚.
我的问题基于此线程 >
我应该如何在jdbcTemplate上进行提交或回滚
jdbcTemplate.commit();
jdbcTemplate.rollback();
或者还有其他一些方法可以使用jdbcTemplate来实现提交和回滚功能.
在调用commit
或rollback
将以编程方式而非声明方式设置事务边界.
因此,您必须掌握 另一种方法是掌握 TransactionTemplate 示例代码: I wanted to do commit and rollback using jdbcTemplate. My question is based on this thread How do I commit or rollback, should I do it on jdbcTemplate like Or there are some other ways to achieve commit and rollback functionality using jdbcTemplate. To call For that reason you have to get hold of the PlatformTransactionManager - inject it that is in your DAO and perform the Sample code: Another approach is to get hold of the TransactionTemplate Sample code:
这篇关于在jdbcTemplate或DataSource上提交的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!@Autowired private JdbcTemplate jdbcTemplate;
@Autowired private TransactionTemplate transactionTemplate;
//..
//for operations where query does not return like delete
public void daoMethod(params) {
transactionTemplate.execute(new TransactionCallbackWithoutResult() {
protected void doInTransactionWithoutResult(TransactionStatus paramTransactionStatus) {
try{
String sqlQuery = "query";
jdbcTemplate.update(query, params);
}catch (Exception e) {
paramTransactionStatus.setRollbackOnly();
}
}
});
}
//for operations where query does return like insert
public int daoMethod(params) {
return transactionTemplate.execute(new TransactionCallback<Integer>() {
public Integer doInTransaction(TransactionStatus paramTransactionStatus) {
String sqlQuery = "query";
Object[] params = params;
int[] types = myTypes;
return jdbcTemplate.update(sqlQuery,params,types);
}
});
}}
jdbcTemplate.commit();
jdbcTemplate.rollback();
commit
or rollback
at will set the transactional boundaries programmatically and not declaratively.commit
/ rollback
operation yourself.@Autowired private JdbcTemplate jdbcTemplate;
@Autowired private PlatformTransactionManager platformTransactionManager;
//..
public void daoMethod(params) {
DefaultTransactionDefinition paramTransactionDefinition = new DefaultTransactionDefinition();
TransactionStatus status=platformTransactionManager.getTransaction(paramTransactionDefinition );
try{
String sqlQuery = "query";
jdbcTemplate.update(sqlQuery, params);
platformTransactionManager.commit(status);
}catch (Exception e) {
platformTransactionManager.rollback(status);
}
@Autowired private JdbcTemplate jdbcTemplate;
@Autowired private TransactionTemplate transactionTemplate;
//..
//for operations where query does not return like delete
public void daoMethod(params) {
transactionTemplate.execute(new TransactionCallbackWithoutResult() {
protected void doInTransactionWithoutResult(TransactionStatus paramTransactionStatus) {
try{
String sqlQuery = "query";
jdbcTemplate.update(query, params);
}catch (Exception e) {
paramTransactionStatus.setRollbackOnly();
}
}
});
}
//for operations where query does return like insert
public int daoMethod(params) {
return transactionTemplate.execute(new TransactionCallback<Integer>() {
public Integer doInTransaction(TransactionStatus paramTransactionStatus) {
String sqlQuery = "query";
Object[] params = params;
int[] types = myTypes;
return jdbcTemplate.update(sqlQuery,params,types);
}
});
}}