Spring整合Mybatis对事务的支持

参考链接:Spring整合Mybatis的简单示例

1、注解的方式集成

1.1、新增aop相关的依赖包

<!--AOP-->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-aop</artifactId>
    <version>5.3.3</version>
</dependency>
<dependency>
    <groupId>org.aspectj</groupId>
    <artifactId>aspectjweaver</artifactId>
    <version>1.9.6</version>
</dependency>

1.2、Spring配置文件中添加事务相关配置项

<bean id="dataSourceTransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource"/>
</bean>

<tx:annotation-driven transaction-manager="dataSourceTransactionManager"/>

1.3、在需要事务支持的类名方法上添加Transactional注解

package com.yusian.dao;

import com.yusian.entity.User;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

public interface UserDao {

    /**
     * 保存用户
     * @param user
     */
    @Transactional
    void saveUser(User user);

    /**
     * 获取所有用户
     * @return
     */
    List<User> getUsers();
}

2、标签配置的方式

2.1、Spring配置文件中添加相关配置项

<!--Transaction相关配置-->
<bean id="dataSourceTransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource"/>
</bean>

<!--事务切面-->
<tx:advice id="txAdvice" transaction-manager="dataSourceTransactionManager">
    <tx:attributes>
        <tx:method name="saveUser" isolation="DEFAULT" propagation="REQUIRED"/>
    </tx:attributes>
</tx:advice>

<!--切入点-->
<aop:config>
    <aop:pointcut id="pc" expression="execution(* com.yusian.dao.*.*(..))"/>
    <aop:advisor advice-ref="txAdvice" pointcut-ref="pc"/>
</aop:config>

Leave a Reply