zoukankan      html  css  js  c++  java
  • Spring之事务操作(注解)

    事务操作步骤:

        <!-- 第一步、配置事务管理器 -->
        <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
            <property name="dataSource" ref="dataSource"/>
        </bean>
        <!-- 第二步、开启事务的注解 -->
        <tx:annotation-driven transaction-manager="transactionManager"></tx:annotation-driven>
        <!-- 第三步、在事务类上添加注解
        @Transactional
        public class UserSerivce {  -->

    举例如下:

    UserDao.java

     1 package helloworld.txZhuJie;
     2 
     3 import org.springframework.jdbc.core.JdbcTemplate;
     4 
     5 public class UserDao {
     6 
     7     private JdbcTemplate jdbcTemplate;
     8 
     9     public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
    10         this.jdbcTemplate = jdbcTemplate;
    11     }
    12 
    13     //    减少
    14     public void reduce(String name,int num) {
    15         // 调用jdbcTemplate对象中的方法实现操作
    16         String sql = "update salary set salary = (salary - ?) where name= ?";
    17         // 表结构:name(varchar 20),salary(int 20)
    18         int rows = jdbcTemplate.update(sql, num, name);
    19         System.out.println("修改行数:" + rows);
    20     }
    21 
    22     //    增加
    23     public void increase(String name,int num) {
    24         // 调用jdbcTemplate对象中的方法实现操作
    25         String sql = "update salary set salary = (salary + ?) where name= ?";
    26         // 表结构:name(varchar 20),salary(int 20)
    27         int rows = jdbcTemplate.update(sql, num, name);
    28         System.out.println("修改行数:" + rows);
    29     }
    30 
    31     //    实现添加操作
    32     public void add() {
    33         // 调用jdbcTemplate对象中的方法实现操作
    34         String sql = "insert into salary value(?,?)";
    35         // 表结构:name(varchar 20),salary(int 20)
    36         int rows = jdbcTemplate.update(sql, "Tom", 10000);
    37         System.out.println("插入行数:" + rows);
    38         rows = jdbcTemplate.update(sql, "Jerry", 10000);
    39         System.out.println("插入行数:" + rows);
    40     }
    41 
    42 }

    UserSerivce.java

     1 package helloworld.txZhuJie;
     2 
     3 import org.springframework.transaction.annotation.Transactional;
     4 
     5 //事务操作注解
     6 @Transactional
     7 public class UserSerivce {
     8     private UserDao userDao;
     9 
    10     public void setUserDao(UserDao userDao) {
    11         this.userDao = userDao;
    12     }
    13 
    14     public void add(){
    15         userDao.add();
    16     }
    17 
    18 //    工资调整
    19     public void updateAccount(){
    20 
    21         userDao.reduce("Tom",1000);
    22 
    23 //        制造异常
    24 //        int n = 100/0;
    25 
    26         userDao.increase("Jerry",1000);
    27 
    28     }
    29 
    30 }

    TestTXZhuJie.java

     1 package helloworld.txZhuJie;
     2 
     3 import org.junit.Before;
     4 import org.junit.Ignore;
     5 import org.junit.Test;
     6 import org.springframework.context.ApplicationContext;
     7 import org.springframework.context.support.ClassPathXmlApplicationContext;
     8 
     9 /*
    10 * 事务操作(注解)举例
    11 * 1、配置事务管理器
    12 * 2、配置事务注解
    13 * 3、在使用事务的方法所在类上添加注解
    14 * */
    15 public class TestTXZhuJie {
    16     @Before
    17     public void beforeRun() {
    18         System.out.println("beforeRun");
    19     }
    20 
    21 //    插入数据
    22     @Ignore
    23     @Test
    24     public void add() {
    25         ApplicationContext context =
    26                 new ClassPathXmlApplicationContext("beans_tx_zhujie.xml");
    27         UserSerivce userSerivce = (UserSerivce) context.getBean("userSerivce");
    28         userSerivce.add();
    29     }
    30 
    31     @Test
    32     public void update() {
    33         ApplicationContext context =
    34                 new ClassPathXmlApplicationContext("beans_tx_zhujie.xml");
    35         UserSerivce userSerivce = (UserSerivce) context.getBean("userSerivce");
    36         userSerivce.updateAccount();
    37     }
    38 
    39 }

    beans_tx_zhujie.xml

     1 <beans xmlns="http://www.springframework.org/schema/beans"
     2        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     3        xmlns:contexnt="http://www.springframework.org/schema/context"
     4        xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop"
     5        xsi:schemaLocation="http://www.springframework.org/schema/beans
     6         http://www.springframework.org/schema/beans/spring-beans.xsd
     7         http://www.springframework.org/schema/context
     8         http://www.springframework.org/schema/context/spring-context-2.5.xsd
     9         http://www.springframework.org/schema/tx
    10         http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
    11 <!--事务配置文件(注解)-->
    12 
    13     <!--配置c3p0连接池-->
    14     <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
    15         <!--注入属性-->
    16         <property name="driverClass" value="com.mysql.jdbc.Driver"></property>
    17         <property name="jdbcUrl" value="jdbc:mysql://192.168.184.130:3306/gxrdb"></property>
    18         <property name="user" value="root"></property>
    19         <property name="password" value="root"></property>
    20     </bean>
    21 
    22     
    23     <!-- 第一步、配置事务管理器 -->
    24     <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    25         <property name="dataSource" ref="dataSource"/>
    26     </bean>
    27     <!-- 第二步、开启事务的注解 -->
    28     <tx:annotation-driven transaction-manager="transactionManager"></tx:annotation-driven>
    29     <!-- 第三步、在事务类上添加注解
    30     @Transactional
    31     public class UserSerivce {  -->
    32 
    33     <!--创建service对象,注入dao对象-->
    34     <bean id="userSerivce" class="helloworld.txZhuJie.UserSerivce">
    35         <property name="userDao" ref="userDao"></property>
    36     </bean>
    37 
    38     <!--创建DAO对象,注入JdbcTemplate对象-->
    39     <bean id="userDao" class="helloworld.txZhuJie.UserDao">
    40         <property name="jdbcTemplate" ref="jdbcTemplate"></property>
    41     </bean>
    42 
    43     <!--创建JdbcTemplate对象,注入连接池dataSource-->
    44     <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
    45         <property name="dataSource" ref="dataSource"></property>
    46     </bean>
    47 
    48     <!--引入其它配置文件-->
    49     <!--<import resource="classpath:helloworld/zhuru/beans.xml"/>-->
    50 
    51 </beans>
  • 相关阅读:
    【转载】 opencv, PIL.Image的彩色图片维度 && caffe和pytorch的矩阵维度
    【转载】 Caffe BN+Scale层和Pytorch BN层的对比
    【转载】 Pytorch中的学习率调整lr_scheduler,ReduceLROnPlateau
    【转载】 Pytorch(0)降低学习率torch.optim.lr_scheduler.ReduceLROnPlateau类
    【转载】 PyTorch学习之六个学习率调整策略
    【转载】 Pytorch(1) pytorch中的BN层的注意事项
    【转载】 【caffe转向pytorch】caffe的BN层+scale层=pytorch的BN层
    硬件设计之串口收发器---ISO1050 (现行) 隔离式 5V CAN 收发器
    外盘和内盘
    工业级别sd卡存贮slc mlc tlc
  • 原文地址:https://www.cnblogs.com/gongxr/p/8252871.html
Copyright © 2011-2022 走看看