• 【Spring 从0开始】JdbcTemplate 数据库事务管理


    在之前的操作中,相关的配置还是写在了 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"
           xmlns:context="http://www.springframework.org/schema/context"
           xmlns:aop="http://www.springframework.org/schema/aop"
           xmlns:tx="http://www.springframework.org/schema/tx"
           xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
                               http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
                               http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
                               http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
    
        <context:component-scan base-package="com.pingguo.spring5"></context:component-scan>
    
        <!--引入外部属性文件-->
        <context:property-placeholder location="classpath:jdbc.properties"/>
    
        <!--配置连接池-->
        <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
            <property name="driverClassName" value="${prop.driverClass}"></property>
            <property name="url" value="${prop.url}"></property>
            <property name="username" value="${prop.username}"></property>
            <property name="password" value="${prop.password}"></property>
        </bean>
    
        <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
            <!--注入datasource-->
            <property name="dataSource" ref="dataSource"></property>
        </bean>
    
        <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
            <!--注入数据源-->
            <property name="dataSource" ref="dataSource"></property>
        </bean>
    
        <!--开启事务注释-->
        <tx:annotation-driven transaction-manager="transactionManager"></tx:annotation-driven>
    </beans>
    

    完全注解方式

    一、创建配置类

    把 xml 里的配置在配置类里用注解方式实现。

    package com.pingguo.spring5.config;
    
    import com.alibaba.druid.pool.DruidDataSource;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.ComponentScan;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.jdbc.core.JdbcTemplate;
    import org.springframework.jdbc.datasource.DataSourceTransactionManager;
    import org.springframework.transaction.annotation.EnableTransactionManagement;
    
    import javax.sql.DataSource;
    
    @Configuration  // 声明配置类
    @ComponentScan(basePackages = "com.pingguo.spring5")  // 开启注解扫描
    @EnableTransactionManagement  // 开启事务
    public class TxConfig {
    
        // 创建数据库连接池
        @Bean
        public DruidDataSource getDruidDataSource() {
            DruidDataSource druidDataSource = new DruidDataSource();
            druidDataSource.setDriverClassName("com.mysql.jdbc.Driver");
            druidDataSource.setUrl("jdbc:mysql://223.31.222.111:3306/shop");
            druidDataSource.setUsername("root");
            druidDataSource.setPassword("123456");
            return druidDataSource;
        }
    
        // 创建 JdbcTemplate 对象
        @Bean
        public JdbcTemplate getJdbcTemplate(DataSource dataSource) {
            JdbcTemplate jdbcTemplate = new JdbcTemplate();
            // 注入 dataSource
            jdbcTemplate.setDataSource(dataSource);
            return jdbcTemplate;
    
        }
    
        // 创建事务管理器的对象
        @Bean
        public DataSourceTransactionManager getDataSourceTransactionManager(DataSource dataSource) {
            DataSourceTransactionManager transactionManager = new DataSourceTransactionManager();
            transactionManager.setDataSource(dataSource);
            return transactionManager;
        }
    }
    

    二、测试注解方式的事务管理

    修改下测试方法,使用 AnnotationConfigApplicationContext 来读取配置类。

    public class TestTrans {
        @Test
        public void testJdbc() {
    
            ApplicationContext context =
                    new AnnotationConfigApplicationContext(TxConfig.class);
    
            UserService userService = context.getBean("userService", UserService.class);
    
            userService.accountMoney();
        }
    }
    

    执行一下:

    八月 08, 2021 8:49:35 上午 com.alibaba.druid.pool.DruidDataSource info
    信息: {dataSource-1} inited
    
    Process finished with exit code 0
    

    查看数据表数据的修改情况。

    成功。

    --不要用肉体的勤奋,去掩盖思考的懒惰--
  • 相关阅读:
    浅谈《倒退的历史——某MIS项目手记(1):“切五花肉”式的分工 》
    使用SMO备份SQLServer2005数据库
    在.NET 2.0中,让你的组件也可以绑定
    URL 正则表达式,全【转】
    WinForm 自定义控件属性
    C# WebBrowser 中删除 HtmlElement
    C# C# WinForm控件美化扩展系列之ImageComboBox
    C# 处理无边框窗体
    【唠叨两句】Event and delegate
    与 “关闭窗体” 相关的一些零散知识
  • 原文地址:https://www.cnblogs.com/pingguo-softwaretesting/p/15114094.html
Copyright © 2020-2023  润新知