使用注解的方式 模拟转账 要么都成功 要么都失败 !保持一致性!
准备工作:
jar包:
需要的类:
UserDao:
- package com.hxzy.spring.c3p0.Dao; import lombok.Data; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Controller; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; @Transactional //开启事务 @Data //生成set get @Controller("userDao") //配置 加入ioc容器 public class UserDao { @Resource(name = "jdbcTemplate") private JdbcTemplate template; public void test_c3(){ String sql = "UPDATE user_all SET u_balance = u_balance-5 WHERE uid = 1"; // int a = 100/0; String sql1 = "UPDATE user_all SET u_balance = u_balance+5 WHERE uid = 2"; template.update(sql); template.update(sql1); } }
UserService:
扫描二维码关注公众号,回复:
5434611 查看本文章
- 1 package com.hxzy.spring.c3p0.Service; 2 3 import com.hxzy.spring.c3p0.Dao.UserDao; 4 import lombok.Data; 5 import org.springframework.stereotype.Service; 6 7 import javax.annotation.Resource; 8 9 @Data 10 @Service("userService") 11 public class UserService { 12 @Resource(name = "userDao") 13 private UserDao userDao ; 14 public void test_(){ 15 userDao.test_c3(); 16 } 17 }
Test测试类:
1 package test; 2 3 import com.hxzy.spring.c3p0.Service.UserService; 4 import org.springframework.context.ApplicationContext; 5 import org.springframework.context.support.ClassPathXmlApplicationContext; 6 7 public class Test { 8 public static void main(String[] args) { 9 ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml"); 10 UserService service = (UserService) context.getBean("userService"); 11 service.test_(); 12 } 13 }
spring-config.xml:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx" 4 xmlns:context="http://www.springframework.org/schema/context" 5 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> 6 7 <!--============创建c3p0链接池=========--> 8 <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> 9 <property name="driverClass" value="com.mysql.jdbc.Driver"></property> 10 <property name="jdbcUrl" value="jdbc:mysql://127.0.0.1:3306/user_transfer"></property> 11 <property name="user" value="root"></property> 12 <property name="password" value="gubin"></property> 13 </bean> 14 <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> 15 <property name="dataSource" ref="dataSource"></property> 16 </bean> 17 <!--============创建事务==============--> 18 <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> 19 <property name="dataSource" ref="dataSource"></property> 20 </bean> 21 <!--开启对事物的支持--> 22 <tx:annotation-driven transaction-manager="transactionManager"></tx:annotation-driven> 23 <!--============开启扫包==========--> 24 <context:component-scan base-package="com.hxzy.spring"></context:component-scan> 25 </beans>
数据库: