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>
总结
- 计划任务
- 完成任务