在一个service中保证mysql和mongo的事务
- controller
package com.xiya.controller;
import com.xiya.dao.StudentDao;
import com.xiya.dao.UserDao;
import com.xiya.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class UserController {
@Autowired
private StudentDao studentDao;
@Autowired
private UserDao userDao;
@GetMapping("/user/add")
@Transactional(rollbackFor = Exception.class)
public String addUser() {
User user = new User();
user.setId("123456703");
user.setUsername("lisi");
user.setPassword("12465");
user.setAge("3");
user.setPhone("13645241248");
userDao.save(user);
studentDao.save(user);
int i = 1/0;
return "aaaa";
}
}
- 配置类
package com.xiya.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.mongodb.MongoDbFactory;
import org.springframework.data.mongodb.MongoTransactionManager;
@Configuration
public class TransactionConfig {
@Bean
MongoTransactionManager transactionManager(MongoDbFactory factory){
return new MongoTransactionManager(factory);
}
}