Spring 编程式事务管理实现
Spring 支持事务管理,有两种方式,编程式事务管理和声明式事务管理,下面介绍编程式事务管理。
编程式事务管理实现步骤:
1.在spring 配置文件中声明数据源
     <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
		<property name="url" value="jdbc:mysql://xxx.xx.xx:3306/mytest?useSSL=false&serverTimezone=Asia/Shanghai"></property>
		<property name="username" value="root"></property>
		<property name="password" value="********"></property>
	</bean> 
2.在spring 配置文件中声明事务管理类
    
     <bean id="transcationManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource"></property>
	</bean> 
使用原生的jdbc 操作,这样当中间出现异常的时候,数据会出现相应的回滚,需要注意的是这里需要设置:conn.setAutoCommit(false);
	@Override
	public void tranfMoeny(String money, String fromname, String targetName) {
		TransactionDefinition define = new DefaultTransactionDefinition();// 初始化事务
		TransactionStatus tstatus = transcationManager.getTransaction(define);//
		Connection conn = null;
		try {
			
			conn = this.dataSource.getConnection();
			conn.setAutoCommit(false);
			Statement ment = conn.createStatement();
			String sql_sub = "update t_account set money=money-" + money + " where username=\'" + fromname + "\'";
			ment.execute(sql_sub);
			Integer.parseInt("jjf");
			String sql_add = "update t_account set money=money+" + money + " where username=\'" + targetName + "\'";
		    ment.execute(sql_add);
			transcationManager.commit(tstatus);
		} catch (Exception e) {
			transcationManager.rollback(tstatus);
			e.printStackTrace();
		}
	} 
不用原生的jdbc ,使用jdbcTemplate 进行事务操作,需要在配置文件中首先配置jdbc模板
	  <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
		<property name="dataSource" ref="dataSource"></property>
	 </bean> 
下面使用jdbcTemplate来进行实现:
	@Override
	public void tranfMoeny(String money, String fromname, String targetName) {
		TransactionDefinition define = new DefaultTransactionDefinition();// 初始化事务
		TransactionStatus tstatus = transcationManager.getTransaction(define);//
		try {
			String sql_sub = "update t_account set money=money-" + money + " where username=\'" + fromname + "\'";
			jdbcTemplate.execute(sql_sub);
			Integer.parseInt("jjf");
			String sql_add = "update t_account set money=money+" + money + " where username=\'" + targetName + "\'";
		    jdbcTemplate.execute(sql_add);
			transcationManager.commit(tstatus);
		} catch (Exception e) {
			transcationManager.rollback(tstatus);
			e.printStackTrace();
		}
	} 
上面就是通过代码实现Spring 的编程式事务管理,分为使用jdbcTemplate和不使用jdbcTemplate 两种方式,
希望对你有所帮助!
