spring中呼叫jdbcTemplate實現update插入未成功
程式碼如下:
@RunWith(SpringJUnit4ClassRunner.class)
@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = true)
@Transactional
@ContextConfiguration(locations = "classpath:applicationContext.xml")
public class UserDaoTest{
@Resource
private UserDao userDao;
@Test
public void testinsertUser() {
/*===========非註解實現插入操作(可以)========*/
/* ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
User user = new User();
user.setUserName("admin");
user.setPassword("213122");
UserDao userDao = (UserDao) ac.getBean("userDao");
int affectedRows = userDao.insertUser(user);*/
/*===========註解實現插入操作(有返回值,但是資料庫未插入,原因可能是事務未提交的緣故)========*/
User user = new User();
user.setUserName("wudi");
user.setPassword("213122");
int affectedRows = userDao.insertUser(user);
System.out.println("======》"+affectedRows);
Assert.assertEquals(affectedRows, 1);
logger.warn("the number of rows affected: "+affectedRows);
}
問題如下:在上面的·方法中,非註解方式呼叫配置檔案實現資料插入成功,註解方式呼叫配置檔案資料插入返回值正常,資料庫表插入id(自增)也明顯改變,但是資料庫就是沒有該條資料,即插入本質上未成功,我想知道原因是什麼,是事務未提交的緣故?但是事務明顯有始有終啊,下面是日誌:
一月 16, 2018 11:40:00 上午 org.springframework.test.context.transaction.TransactionalTestExecutionListener
startNewTransaction
資訊: Began transaction (1): transaction manager [o
11:40:00.423 [main] DEBUG c.a.druid.pool.PreparedStatementPool - {conn-10010, pstmt-20000} enter cache
======》1
11:40:00.424 [main] WARN com.flux.tmsws.test.UserDaoTest - the number of rows affected: 1
一月 16, 2018 11:40:00 上午 org.springframework.test.context.transaction.TransactionalTestExecutionListener
endTransaction
有人說是配置檔案的問題,下面是關於事務的配置檔案:
<!-- 開啟事務控制的註解支援(後新增的,也沒起作用) -->
<tx:annotation-driven transaction-manager="transactionManager" />
<context:component-scan base-package="com.flux.tmsws.*" />
<bean id = "transactionManager" class = "org.springframework.jdbc.datasource.DataSourceTransactionManager" >
<property name = "dataSource">
<ref bean = "dataSource"/>
</property>
</bean>
<bean id="jdbcTemplate"
class="org.springframework.jdbc.core.JdbcTemplate" abstract="false" lazy-init="false" autowire="default">
<property name="dataSource">
<ref bean="dataSource" />
</property>
</bean>
<bean id="userDao" class="com.flux.tmsws.dao.Impl.UserDaoImpl">
</bean>
請問原因在哪呢???