package com.taobao.tddl.qatest.matrix.template; import java.util.List; import java.util.Map; import org.junit.Assert; import org.junit.Test; import org.springframework.jdbc.datasource.DataSourceTransactionManager; import org.springframework.transaction.TransactionStatus; import org.springframework.transaction.support.TransactionCallback; import org.springframework.transaction.support.TransactionTemplate; import com.taobao.tddl.qatest.BaseTemplateTestCase; /** * Comment for TransactionTemplateTest * <p/> * Author By: zhuoxue.yll Created Date: 2013-4-10 上午10:43:54 */ public class TransactionTemplateTest extends BaseTemplateTestCase { private DataSourceTransactionManager transactionManager = new DataSourceTransactionManager(us); private TransactionTemplate andorTransaction = new TransactionTemplate(transactionManager); @Test public void transactionTest() throws Exception { andorTransaction.execute(new TransactionCallback() { @Override public Object doInTransaction(TransactionStatus status) { try { sql = String.format("insert into %s (pk,name) values(?,?)", normaltblTableName); andorJT.update(sql, new Object[] { RANDOM_ID, name }); sql = String.format("select * from %s where pk= ?", normaltblTableName); Map re = andorJT.queryForMap(sql, new Object[] { RANDOM_ID }); Assert.assertEquals(name, String.valueOf(re.get("NAME"))); } catch (Exception ex) { status.setRollbackOnly(); } return null; } }); sql = String.format("select * from %s where pk= ?", normaltblTableName); Map re = andorJT.queryForMap(sql, new Object[] { RANDOM_ID }); Assert.assertEquals(name, String.valueOf(re.get("NAME"))); } @Test public void rollbackTest() throws Exception { andorTransaction.execute(new TransactionCallback() { @Override public Object doInTransaction(TransactionStatus status) { try { sql = String.format("insert into %s (pk,name) values(?,?)", normaltblTableName); andorJT.update(sql, new Object[] { RANDOM_ID, name }); sql = String.format("select * from %s where pk= ?", normaltblTableName); Map re = andorJT.queryForMap(sql, new Object[] { RANDOM_ID }); Assert.assertEquals(name, String.valueOf(re.get("NAME"))); status.setRollbackOnly(); } catch (Exception ex) { status.setRollbackOnly(); } return null; } }); // 验证查询不到数据 sql = String.format("select * from %s where pk= ?", normaltblTableName); List le = andorJT.queryForList(sql, new Object[] { RANDOM_ID }); Assert.assertEquals(0, le.size()); } }