三,搭建環境:事務控制

Rainbow-Sea發表於2024-07-31

三,搭建環境:事務控制

@

目錄
  • 三,搭建環境:事務控制
  • 宣告式事務配置
  • 註解寫法
    • 查詢操作
    • 增刪改操作


宣告式事務配置

demo-module01-web 的模組下的,spring-persist.xml 配置檔案中

開啟基於註解的宣告式事務支援

在這裡插入圖片描述

   <!-- 配置事務管理器 -->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <!-- 裝配資料來源 -->
        <property name="dataSource" ref="druidDataSource"/>
    </bean>

    <!-- 配置事務的註解驅動,開啟基於註解的宣告式事務功能 -->
    <tx:annotation-driven transaction-manager="transactionManager"/>

    <!--    開啟基於註解的宣告式事務支援-->
    <!-- 配置事務的註解驅動,開啟基於註解的宣告式事務功能 -->
    <tx:annotation-driven transaction-manager="transactionManager"></tx:annotation-driven>
<?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:mybatis="http://mybatis.org/schema/mybatis-spring" 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 https://www.springframework.org/schema/context/spring-context.xsd http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">

    <!--    載入外部配置檔案-->
    <context:property-placeholder location="classpath:jdbc.properties"></context:property-placeholder>

    <!--    配置資料來源-->
    <bean id="druidDataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.passwords}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="driverClassName" value="${jdbc.driver}"/>
        <property name="initialSize" value="${jdbc.initialSize}"/>
        <property name="maxActive" value="${jdbc.maxActive}"/>
        <property name="maxWait" value="${jdbc.maxWait}"/>
    </bean>

<!--    配置 SqlSessionFactoryBean-->
    <bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
<!--        指定 Mapper 配置檔案的位置 , Set注入 /mapper 下的所有檔案-->
        <property name="mapperLocations" value="classpath:mapper/*Mapper.xml"></property>
<!--        裝配資料來源-->
        <property name="dataSource" ref="druidDataSource"></property>
    </bean>

<!--    配置 Mapper 介面的掃描-->
    <mybatis:scan base-package="com.rainbowsea.imperial.court.mapper"></mybatis:scan>


    <!-- 配置事務管理器 -->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <!-- 裝配資料來源 -->
        <property name="dataSource" ref="druidDataSource"/>
    </bean>


    <!-- 配置事務的註解驅動,開啟基於註解的宣告式事務功能 -->
    <tx:annotation-driven transaction-manager="transactionManager"/>


</beans>

如果報錯:注意名稱空間上的新增。

在這裡插入圖片描述

註解寫法

查詢操作

@Transactional(readOnly = true)

增刪改操作

@Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false)

在具體程式碼開發中可能會將相同設定的 @Transactional 註解提取到 Service 類上。

對應順序上一節內容:✏️✏️✏️ 對應順序上一節內容:✏️✏️✏️ 二,SSM 搭建環境:持久化層-CSDN部落格

對應順序是下一節內容:✏️✏️✏️

相關文章