步驟
* 環(huán)境搭建:
* 1失都、導入相關依賴
* 數(shù)據(jù)源柬讨、數(shù)據(jù)庫驅動舷胜、Spring-jdbc模塊
*
* 2槽驶、配置數(shù)據(jù)源楼雹、JdbcTemplate(Spring提供的簡化數(shù)據(jù)庫操作的工具)數(shù)據(jù)操作
* 3、 @Transactional表示當前方法為事務方法
* 4匹层、 @EnableTransactionManagement開啟事務管理功能
* 5极谊、 配置事務管理器來管理事務
配置類
@EnableTransactionManagement
@ComponentScan("com.dwd.snail.testspring.test.tx")
@Configuration
public class TxConfig {
@Bean
public DataSource dataSource() throws PropertyVetoException {
ComboPooledDataSource dataSource=new ComboPooledDataSource();
dataSource.setUser("root");
dataSource.setPassword("123456");
dataSource.setDriverClass("com.mysql.jdbc.Driver");
dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/snailtest?characterEncoding=utf8");
return dataSource;
}
@Bean
public JdbcTemplate jdbcTemplate() throws PropertyVetoException {
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource());
return jdbcTemplate;
}
//一定要注冊事務管理器在容器中
@Bean
public PlatformTransactionManager platformTransactionManager() throws PropertyVetoException {
return new DataSourceTransactionManager(dataSource());
}
}
service
@Service
public class UserService {
@Autowired
private UserDao userDao;
@Transactional
public void insertUser(){
userDao.insert();
System.out.println("======================插入成功===========================");
int i=10/0;
}
}
Dao
@Repository
public class UserDao {
@Autowired
private JdbcTemplate jdbcTemplate;
public void insert(){
String sql="INSERT INTO student_info (name,nickname,age) VALUES (?,?,?)";
String randomstr=UUID.randomUUID().toString().substring(0,2);
String name="黃"+ randomstr;
String nickname="蝸牛"+ randomstr;
int x=(int)(Math.random()*100);
jdbcTemplate.update(sql,name,nickname,x);
}
}
test
public class IocTest_tx {
AnnotationConfigApplicationContext applicationContext=new AnnotationConfigApplicationContext(TxConfig.class);
@Test
public void test01(){
// printBeans(applicationContext);
// applicationContext.close();
UserService userService = applicationContext.getBean(UserService.class);
userService.insertUser();
applicationContext.close();
}
// private void printBeans(AnnotationConfigApplicationContext applicationContext){
// String[] names=applicationContext.getBeanDefinitionNames();
// for (String name:names){
// System.out.println(name);
// System.out.println(applicationContext.getBean(name));
// }
// }
}