打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
spring事务处理实例BookShopDao
接口BookShopDao
public interface BookShopDao {
// 根据书号获取书的单价
public int findBookPriceByIsbn(String isbn);
//更新书的库存,使书号对应的库存减1
public void updateBookStock(String isbn);
//更新用户的账户余额,是username的blance-price
public void updaUserAccount(String usernameid,int price);
}
实现接口BookShopDao,对BookShopDao进行事务处理
@Repository("bookShopDao")
public class BookShopDaoImpl implements BookShopDao {
@Autowired
private JdbcTemplate jdbcTemplate;

@Override
public int findBookPriceByIsbn(String isbn) {
// 检查书的库存是否足够,若不够,则抛出异常
String sql = "SELECT price FROM book WHERE isbn=?";
return jdbcTemplate.queryForObject(sql, Integer.class, isbn);
}

@Override
public void updateBookStock(String isbn) {
// 验证库存是否充足
String sql2 = "SELECT stock FROM book_stock WHERE isbn=?";
int stock = jdbcTemplate.queryForObject(sql2, Integer.class, isbn);
if (stock == 0) {
throw new BookStockExecption("库存不足");
}
String sql = "UPDATE book_stock SET stock=stock-1 WHERE isbn=?";
jdbcTemplate.update(sql, isbn);
}

@Override
public void updaUserAccount(String accountid, int price) {
// 验证余额是否充足
String sql2 = "SELECT balance FROM account WHERE accountid=?";
int balance = jdbcTemplate.queryForObject(sql2, Integer.class,
accountid);
if (balance < price) {
throw new UserAccountExeception("余额不足");
}
String sql = "UPDATE account SET balance =balance-? WHERE accountid=? ";
jdbcTemplate.update(sql, price, accountid);
}
}
XML配置:
<!-- 配置c3p0数据源 -->
<bean id="dataSources" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="user" value="${jdbc.user}"></property>
<property name="password" value="${jdbc.password}"></property>
<property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
<property name="driverClass" value="${jdbc.driverClass}"></property>
<property name="maxPoolSize" value="${jdbc.maxPoolSize}"></property>
<property name="minPoolSize" value="${jdbc.minPoolSize}"></property>
</bean>
<!-- 配置Spring的jdbcTemplate -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSources"></property>
</bean>
<!-- 配置事务管理器 -->
<bean id="transactionManager"  class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSources"></property>
</bean>
测试类省去.....
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
使用Spring JDBC包装基本的CRUD操作
Spring事务管理(详解 实例)
Spring的事务处理
spring3之JdbcTemplate详解
c3p0数据库连接池实例
使用spring的动态路由实现数据库读写分离【数据库读写分离(二) 】
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服