Spring中 使用注解+c3p0+事物 《模拟银行转账》

  使用注解的方式  模拟转账 要么都成功 要么都失败 !保持一致性!

准备工作:

    jar包: 

        

    

  需要的类:

            

      

   UserDao: 

      

  1. 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. 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>

  数据库:

    

     

      

猜你喜欢

转载自www.cnblogs.com/gu-bin/p/10481378.html