zoukankan      html  css  js  c++  java
  • SpringAOP——通过JdbcTemplate连接数据库,并使用事务(Transactional)(使用IDEA进行编程)

    JdbcTemplate:用于操作数据库,与Dbutils一样,是一个操作数据库的工具。

    首先声明事物是很简单的,只是为了展现例子,需要做很多准备工作。

    1)使用c3p0获取连接:

      先导入mysql的jar包:  mysql-connector-java-8.0.16.jar

      再导入c3p0的3个jar包:  c3p0-0.9.5.2.jar  c3p0-oracle-thin-extras-0.9.5.2.jar  mchange-commons-java-0.2.11.jar                    

                下载地址:https://sourceforge.net/projects/c3p0/files/latest/download?source=files  ——等待一会自动弹出下载框

                c3p0的基础知识:https://www.cnblogs.com/ygj0930/p/6405861.html

    2)创建配置文件:

      先创建:db.properties  https://blog.csdn.net/u013164931/article/details/76283884

    jdbc.user=root
    jdbc.pssward=123456
    jdbc.driverClass=com.mysql.cj.jdbc.Driver
    jdbc.url=jdbc:mysql://localhost:3306/student?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT
    
    jdbc.initPoolSize=5
    jdbc.maxPoolSize=10
    

      配置xml文件

            <!--导入资源文件-->
            <context:property-placeholder location="classpath:SpringAOP_Transaction/db.properties"></context:property-placeholder>
            <!--配置c3p0数据源-->
            <bean id="dataSours"
                  class="com.mchange.v2.c3p0.ComboPooledDataSource">
                    <property name="user" value="${jdbc.user}"/>
                    <property name="password" value="${jdbc.pssward}"/>
                    <property name="jdbcUrl" value="${jdbc.url}"/>
                    <property name="driverClass" value="${jdbc.driverClass}"/>
    
                    <property name="initialPoolSize" value="${jdbc.initPoolSize}"/>
                    <property name="maxPoolSize" value="${jdbc.maxPoolSize}"/>
            </bean>
    

       这个时候要记得测试资源配置有没有问题

      

    3)配置JdbcTemplate

            <!--配置spring的jdbcTemplate-->
            <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
                    <property name="dataSource" ref="dataSource"></property>
            </bean>
    

       这个时候要记得测试

    4)事物的准备工作:

      数据库:

    CREATE TABLE `student`.`book` (
      `isbn` VARCHAR(50) NOT NULL,
      `book_name` VARCHAR(100) NULL,
      `price` INT NULL,
      PRIMARY KEY (`isbn`));
    
    
    CREATE TABLE `student`.`book_stock` (
      `isbn` VARCHAR(50) NOT NULL,
      `stock` INT NULL,
      PRIMARY KEY (`isbn`));
    
    CREATE TABLE `student`.`account` (
      `username` VARCHAR(50) NOT NULL,
      `balance` INT NULL,
      PRIMARY KEY (`username`));
    

       基本的方法:

      代码不贴了。。。

    5)声明式事务: XML配置文件,配置两个

            <!--创建事务管理器-->
            <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>
    

     注:启用事务注解的资源头文件为xmlns:tx="http://www.springframework.org/schema/tx"

      在要启用事务的方法前面@Transactional写上注解

        //在方法写注解,启用事务
        @Transactional
        @Override
        public void purchase(String username, String isbn) {
            //1获取书的单价
            int price=bookShopDao.findBookPriceByIsbn(isbn);
            //2更新库存
            bookShopDao.updateBookStock(isbn);
            //3 更新账号余额
            bookShopDao.updateUserAccunt(username,price);
        }
    
  • 相关阅读:
    git 操作
    vim使用指北 ---- Multiple Windows in Vim
    Unity 异步网络方案 IOCP Socket + ThreadSafe Queue
    unity 四元数, 两行等价的代码
    golang的项目结构 相关知识
    stencil in unity3d
    一段tcl代码
    16_游戏编程模式ServiceLocator 服务定位
    15_游戏编程模式EventQueue
    14_ Component 游戏开发组件模式
  • 原文地址:https://www.cnblogs.com/Lemonades/p/11066927.html
Copyright © 2011-2022 走看看