spring实现jdbctemplate添加事务支持示例

  

复制代码 代码如下:

  public interface JdbcTemplate extends JdbcOperations {

  public abstract void beginTranstaion();

  public abstract void commit();

  public abstract void rollback();

  }

  

复制代码 代码如下:

  public class JdbcTemplateImpl extends org.springframework.jdbc.core.JdbcTemplate implements JdbcTemplate {

  private PlatformTransactionManager platformTransactionManager;

  private DefaultTransactionDefinition transactionDefinition;

  private ThreadLocal<TransactionStatus> transcationStatus = new ThreadLocal<TransactionStatus>();

  public void beginTranstaion() {

  TransactionStatus tmp = platformTransactionManager.getTransaction(transactionDefinition);

  transcationStatus.set(tmp);

  }

  public void commit() {

  TransactionStatus tmp = transcationStatus.get();

  if (tmp == null) {

  throw new RMSRuntimeException("no transcation");

  }

  platformTransactionManager.commit(tmp);

  transcationStatus.remove();

  }

  public void rollback() {

  TransactionStatus tmp = transcationStatus.get();

  if (tmp == null) {

  throw new RMSRuntimeException("no transcation");

  }

  platformTransactionManager.rollback(tmp);

  transcationStatus.remove();

  }

  @Override

  public void afterPropertiesSet() {

  super.afterPropertiesSet();

  transactionDefinition = new DefaultTransactionDefinition();

  transactionDefinition.setIsolationLevel(TransactionDefinition.ISOLATION_READ_COMMITTED);

  transactionDefinition.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);

  platformTransactionManager = new DataSourceTransactionManager(getDataSource());

  }

  public PlatformTransactionManager getPlatformTransactionManager() {

  return platformTransactionManager;

  }

  public DefaultTransactionDefinition getTransactionDefinition() {

  return transactionDefinition;

  }

  public ThreadLocal<TransactionStatus> getTranscationStatus() {

  return transcationStatus;

  }

  }