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 [org.springframework.jdbc.datasource.DataSourceTransactionManager@39b75a89]; rollback [true]
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>

请问原因在哪呢???

阅读更多
换一批

没有更多推荐了,返回首页