private TransactionTemplate transactionTemplate;
private JdbcTemplateManager jdbcTemplateManager;
DataSourceTransactionManager transactionManager = new DataSourceTransactionManager();
DataSource dataSource = jdbcTemplateManager.getJdbcTemplate(this.dbType).getDataSource();
transactionManager.setDataSource(dataSource);
transactionTemplate = new TransactionTemplate();
transactionTemplate.setTransactionManager(transactionManager);
transactionTemplate.execute(new TransactionCallbackWithoutResult() {
@Override
protected void doInTransactionWithoutResult(TransactionStatus transactionStatus) {
try {
namedParameterJdbcTemplate.batchUpdate(getExecutionSql(),
generateMapSqlParameterSource().toArray(new MapSqlParameterSource[0]));
} catch (Exception e) {
throw e;
}
}
});
背景:
使用 namedParameterJdbcTemplate.batchUpdate() 返回异常如果 添加 @transaction
也是不生效的.必须使用上面的方式
DataSourceTransactionManager 控制事物 commit or rollback
transactionStatus.createSavepoint() 使用创建记录报错节点
# jdbcTemplateManager 我们是多数据源 就是JdbcTemplate