spring事务转账案例
2017-03-12 09:21
351 查看
添加使用事务需要增加的相关jar包
数据库建表
dao层
service
applicationContext.xml
test
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>${org.springframework.version}</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.38</version> </dependency> <!-- https://mvnrepository.com/artifact/c3p0/c3p0 --> <dependency> <groupId>c3p0</groupId> <artifactId>c3p0</artifactId> <version>0.9.1.2</version> </dependency>
数据库建表
create table account( id int primary key auto_increment, username varchar(50), money int ); insert into account(username,money) values('jack','10000'); insert into account(username,money) values('rose','10000');
dao层
public interface AccountDao { public void out(String outer,Integer money); public void in(String inner,Integer money); } //继承JdbcDaoSupport public class AccountDaoImpl extends JdbcDaoSupport implements AccountDao{ public void out(String outer, Integer money) { this.getJdbcTemplate().update("update account set money = money - ? where username = ?", money,outer); } public void in(String inner, Integer money) { this.getJdbcTemplate().update("update account set money = money + ? where username = ?", money,inner); } }
service
public interface Service { public void transfer(String outer,String inner,Integer money); } public class ServiceImpl implements Service { private AccountDao accountDao; public void setAccountDao(AccountDao accountDao) { this.accountDao = accountDao; } private TransactionTemplate transactionTemplate; public void setTransactionTemplate(TransactionTemplate transactionTemplate) { this.transactionTemplate = transactionTemplate; } public void transfer(final String outer,final String inner,final Integer money) { transactionTemplate.execute( new TransactionCallbackWithoutResult() { @Override protected void doInTransactionWithoutResult(TransactionStatus status) { accountDao.in(inner,money); accountDao.out(outer,money); } } ); } }
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="driverClass" value="com.mysql.jdbc.Driver"></property> <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/db"></property> <property name="user" value="root"></property> <property name="password" value="XXX"></property> </bean> <bean id="accountDao" class="springtx.AccountDaoImpl"> <property name="dataSource" ref="dataSource"></property> </bean> <bean id="service" class="springtx.ServiceImpl"> <property name="accountDao" ref="accountDao"></property> <property name="transactionTemplate" ref="transactionTemplate"></property> </bean> <bean id="transactionTemplate" class="org.springframework.transaction.support.TransactionTemplate"> <property name="transactionManager" ref="txManager"></property> </bean> <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"></property> </bean> </beans>
test
public class Test { @org.junit.jupiter.api.Test public void demo(){ ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); Service service = (Service) applicationContext.getBean("service"); service.transfer("jack", "rose", 1000); } }
相关文章推荐
- spring事务学习(转账案例)(二)
- spring事务管理之转账案例
- Spring通过事务实现模拟银行转账案例
- spring事务学习(转账案例)(一)
- spring事务学习(转账案例)(二)
- Spring 事务操作(银行转账案例),使用spring 对jdbc的支持完成对数据库的操作
- Spring编程式事务管理和声明式事务管理 案例
- Spring JDBC-实施Spring AOP事务注意事项及案例分析
- spring 事务无法正常回滚的案例
- javaweb银行转账案例(事务处理)JDBC常见知识点(三)
- spring的事务管理(配置文件方式和注解方式实现、转账环境搭建)
- Spring框架的事务管理完成转账的案例
- Spring+Mybatis+MySql+Maven 简单的事务管理案例
- Spring+Mybatis+MySql+Maven 简单的事务管理案例
- Spring 事务管理案例
- Spring+Mybatis+MySql+Maven 简单的事务管理案例
- Spring-hibernate-事务处理详解及案例<六>
- Spring+Mybatis+MySql+Maven 简单的事务管理案例
- 28Spring_的事务管理_银行转账业务加上事务控制_基于注解进行声明式事务管理
- Spring编程式事务管理案例