<properties>这个标签是用来定义共同的版本号,因为我们平时使用spring为了避免版本不兼容,推荐使用同一版本。下面的${}则是引用上面的定义的版本标签。
/**
* spring完成事务的管理:--默认提供了一个事务切面类。--spring-tx依赖---该依赖jar中包含事务管理类。
* <properties>
* <spring.version>5.2.15.RELEASE</spring.version>
* </properties>
* <!--spring事务管理依赖jar-->
* <dependency>
* <groupId>org.springframework</groupId>
* <artifactId>spring-tx</artifactId>
* <version>${spring.version}</version>
* </dependency>
* 在spring配置文件中配置事务管理类。
* <!--事务管理类:切面 开启事务 事务提交 事务回滚-->
* <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
* <property name="dataSource" ref="datasource"/>
* </bean>
* <!--开启事务注解-->
* <tx:annotation-driven/>
* 业务代码中添加事务注解。@Transactional-----开启事务
*/
@Transactional //这里是开启事务的注解使用
public void purchase(String isbn, String username) {
//1.查询isbn对应图书价格
double price = bookShopDAO.findBookPriceByIsbn(isbn);
//2. 查询账号余额
double balance = bookShopDAO.findBalanceByUsername(username);
//3. 判断余额是否大于等于图书价格--修改余额
if(balance\<price){
throw new RuntimeException("余额不足");
}
bookShopDAO.updateAccount(username,price);
//4. 根据isbn查询库存
int stock = bookShopDAO.findStockByIsbn(isbn);
//5. 判断库存是否大于0--修改库存
if(stock<=0){
throw new RuntimeException("库存不足");
}
bookShopDAO.updateBookStock(isbn);
}```