spring事务

spring事务

事务概念

把一个事务的一系列操作当成一个操作来执行。核心:要么全部执行,要么一个都不执行。

思路分析

1、配置transactionManager

    <!-- 配置事务管理器 -->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="datasource"/>
    </bean>

2、配置事务通知

    <!-- 配置事务通知 -->
    <tx:advice id="txAdvice" transaction-manager="transactionManager">
        <tx:attributes>
            <tx:method name="addUser" propagation="REQUIRED"/>
            <tx:method name="deleteUser" propagation="REQUIRED"/>
            <tx:method name="selectUser" propagation="REQUIRED"/>
            <tx:method name="query" read-only="true"/>
            <tx:method name="*" propagation="REQUIRED"/>
        </tx:attributes>
    </tx:advice>

接口实现测试如下

public class UserServiceImpl2 extends SqlSessionDaoSupport implements UserMapper {
    @Override
    public List<User> selectUser() {
        //10	charles	123456	77@qq.com	普通用户	0
        User user = new User(10, "charles", "123456", "77@qq.com", "普通用户", 0);
        UserMapper mapper = getSqlSession().getMapper(UserMapper.class);
        mapper.addUser(user);
        mapper.deleteUser(9);
        return getSqlSession().getMapper(UserMapper.class).selectUser();
    }

    @Override
    public int addUser(User user) {
        return getSqlSession().getMapper(UserMapper.class).addUser(user);
    }

    @Override
    public int deleteUser(long id) {
        return getSqlSession().getMapper(UserMapper.class).deleteUser(id);
    }
}

3、配置事务织入

    <!-- 配置事务织入 -->
    <aop:config>
        <aop:pointcut id="txPointCut" expression="execution(* com.luo.Mapper.*.*(..))"/>
        <aop:advisor advice-ref="txAdvice" pointcut-ref="txPointCut"/>
    </aop:config>

总结

  • 计划任务
  • 完成任务
上一篇:整合Spring-Mybatis


下一篇:MyBatis04:使用注解开发