标签:xmla tis artifact users 逻辑 enc exe insert col
事务:要么都成功!要么都不成功!
事务四大特性:ACID :原子性、一致性、隔离性、持久性。
编程式事务:把所有事务的代码写在业务中;
声明式事务:使用AOP横切进去;一般都会使用声明式事务
要开启 Spring 的事务处理功能,在 Spring 的配置文件中创建一个dataSourceTransactionManager对象:
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <constructor-arg ref="dataSource" /> </bean>
使用Spring进行事务通知,需要导入约束文件:tx
事务传播的级别:
key属性确定代理应该给哪个方法增加事务行为。这样的属性最重要的部份是传播行为。PROPAGATION_REQUIRED–支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。
1.导包AOP
<!--aop织入包--> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.8.9</version> </dependency>
2.业务逻辑
public List<User> selectAllUser() { UserDao mapper = sqlSession.getMapper(UserDao.class); User user = new User(3, "maomao", "123321"); mapper.add(user); mapper.delete(5); return mapper.selectAllUser(); }
3.mapper映射文件
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="org.west.dao.UserDao"> <select id="selectAllUser" resultType="org.west.pojo.User"> select *from user </select> <insert id="add" parameterType="org.west.pojo.User"> insert into mybatis.user (id, name, pwd) values (#{id}, #{name}, #{pwd}) </insert> <delete id="delete" parameterType="int"> delete from mybatis.user where id=#{id} </delete> </mapper>
4.配置事务管理器,参数需要一个数据源;
<!--需要配置一个事物管理器--> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <constructor-arg ref="dataSource"/> </bean>
5.配置声明事务通知
<!--配置声明事物通知--> <tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> <!--name:指的是给那些发放添加事务 propagation:事务的级别,一般选择这个REQUIRED,如果有事务 就用这个事务,没有事务就创建一个事务--> <tx:method name="add" propagation="REQUIRED"/> <tx:method name="delete" propagation="REQUIRED"/> </tx:attributes> </tx:advice>
6.配置aop织入事务
<aop:config> <!--切入点--> <aop:pointcut id="pointCut" expression="execution(* org.west.dao.UserDaoImpl.*(..))"/> <aop:advisor advice-ref="txAdvice" pointcut-ref="pointCut"/> </aop:config>
7.测试类
public class Testya { @Test public void test(){ ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); UserDao userDaoImpl = (UserDao) context.getBean("userDaoImpl"); List<User> users = userDaoImpl.selectAllUser(); for (User user : users) { System.out.println(user); } } }
标签:xmla tis artifact users 逻辑 enc exe insert col
原文地址:https://www.cnblogs.com/xiaoqiqistudy/p/11306454.html