spring---aop--->事务管理

69 阅读1分钟

<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);
}```