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);
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM