12.11 声明事务
Spring提供JdbcTemplate能快捷操作数据库
- ```
使用JDBC 回顾一下:- getDataSource
- getConnection
- getStatement 或preparedStatement
- statement.setInt
- stament.executeQuery()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
然后配置一下
然后执行想执行的语句
```xml
<!--1. 配置事务管理器让其进行事务控制:一定要导入面向切面编程的几个包,基本版aspect+增强版三个-->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<!-- 控制住数据源-->
<property name="dataSource" ref="dataSource"/>
</bean>
<!--2. 开启基于注解的事务控制模式:依赖tx名称空间-->
<tx:annotation-driven transaction-manager="transactionManager"/>
<!-- 3. 给事务方法加注解 -->
1 |
|
引入外部配置文件
扫描包
配置数据源
配置JDBCTEMPLATE,给JDBCTEMPLATE一个id,配置dataSource
配置声明式事务(上面的三步代码)
@Transactional 是注解在要事务的方法上,不是执行在test上! @Transactional public void checkout(String username,String isbn) throws SQLException { bookDao.updateStock(isbn); int price = bookDao.getPrice(isbn); bookDao.updateBalance(username,price); int i=10/0; }//正确 @Test @Transactional //错误 不应该注解在这 public void test04() throws SQLException { BookService bookService=ioc.getBean("bookService",BookService.class); // BookService bookService=new BookService(); bookService.checkout("Tom","ISBN-001"); System.out.println("结账完成"); }