永发信息网

spring jdbctemplate 使用 AOP管理事务,但是无效,具体的配置文件如下:

答案:2  悬赏:40  手机版
解决时间 2021-02-08 21:35
  • 提问者网友:聂風
  • 2021-02-08 01:03



























我在Service层定义一个查询方法:

@Override
public List queryAllUsers() {
return userDao.queryAllUsers();
}

在相应的Dao层

@Override
public List queryAllUsers() {
User user = new User();
user.setUsername("test");
user.setAge(32);
user.setEmail("123456@qq.com");
user.setPassword("123");
// 这里可以做修改操作,并没有像配置文件那样,Spring有控制只读事务,而且抛异常也不会回滚
getJdbcTemplate().update(UPDATE_USER_INFO, new Object[]{user.getPassword(),user.getAge(),user.getEmail(),user.getUsername()}, new int[]{Types.VARCHAR,Types.INTEGER,Types.VARCHAR,Types.VARCHAR});
return getJdbcTemplate().query(USER_ALL_SQL, new UserMapper());
}
所以请问一下这是怎么回事,我的Mysql上的表是ENGINE=InnoDB,应该不是数据库不支持事务导致的。
下面是测试类:
public class TestService {
ApplicationContext context = null;

@Before
public void init(){
context = new ClassPathXmlApplicationContext("applicationContext.xml");
}

@Test
public void testUserService() throws Exception {
UserService service = context.getBean(UserService.class);
service.queryAllUsers();
}

}
最佳答案
  • 五星知识达人网友:愁杀梦里人
  • 2021-02-08 01:26
在serice实现类上添加@Transactional,在spring的配置文件里添加

这样就可以了。
全部回答
  • 1楼网友:十年萤火照君眠
  • 2021-02-08 02:33
这个包应该是 笔者自己创建获取bean的包 实际datasource 来自 applicationcontext里面的datasource 所以你也可以自定义获取datasource 方法 通过applicationcontext获取datasource
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯