概述
2019独角兽企业重金招聘Python工程师标准>>>
1.基于xml的实现
1.1先创建一个表account
1.2创建类 ,这个关于数据库的操作,前面的博客已经配置好了;
public class OrderDao { public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; } private JdbcTemplate jdbcTemplate; public void lessmoney(){ String sql="update account set salary=salary-? where username=?"; jdbcTemplate.update(sql,1000,"zhangsan"); } public void moremoney(){ String sql="update account set salary=salary+? where username=?"; jdbcTemplate.update(sql,1000,"lisi"); } }
public class OrderService { public void setOrderDao(OrderDao orderDao) { this.orderDao = orderDao; } private OrderDao orderDao; public void accountchange(){ orderDao.lessmoney(); //制造个异常,事务不能进行,进行回滚 int i=100/0; orderDao.moremoney(); } }
1.3xml配置
<!--用xml的方式配置c3p0 连接数据--> <bean id="datasource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <!--配置属性--> <property name="driverClass" value="com.mysql.jdbc.Driver"></property> <property name="jdbcUrl" value="jdbc:mysql:///mysql"></property> <property name="user" value="root"></property> <property name="password" value="raoxiaobo123"></property> </bean> <!--事务管理 1.配置事务管理器--> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="datasource"></property> </bean> <!--2.配置事务增强--> <tx:advice id="tx-advice" transaction-manager="transactionManager"> <tx:attributes> <!--要增强的方法,account*为开头account的方法--> <tx:method name="account*"/> </tx:attributes> </tx:advice> <!--3.配置切面--> <aop:config> <aop:pointcut id="pointcut1" expression="execution(* com.xiaobo.transaction.OrderService.*())"></aop:pointcut> <aop:advisor advice-ref="tx-advice" pointcut-ref="pointcut1"></aop:advisor> </aop:config> <bean id="orderService" class="com.xiaobo.transaction.OrderService"> <property name="orderDao" ref="orderDao"></property> </bean> <bean id="orderDao" class="com.xiaobo.transaction.OrderDao"> <property name="jdbcTemplate" ref="jdbcTemplate"></property> </bean> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="datasource"></property> </bean>
1.3xml测试
public class testDemo { @Test public void testTransaction(){ ApplicationContext context=new ClassPathXmlApplicationContext("bean5.xml"); OrderService orderService= (OrderService) context.getBean("orderService"); orderService.accountchange(); } }
1.4结果:报除数不能为0的错误,表中的数据未变化
2基于注解的方式
<!--用xml的方式配置c3p0 连接数据--> <bean id="datasource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <!--配置属性--> <property name="driverClass" value="com.mysql.jdbc.Driver"></property> <property name="jdbcUrl" value="jdbc:mysql:///mysql"></property> <property name="user" value="root"></property> <property name="password" value="raoxiaobo123"></property> </bean> <!--事务管理 1.配置事务管理器--> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="datasource"></property> </bean> <!--2.开启事务注解--> <tx:annotation-driven transaction-manager="transactionManager"></tx:annotation-driven> <bean id="orderService" class="com.xiaobo.transaction.OrderService"> <property name="orderDao" ref="orderDao"></property> </bean> <bean id="orderDao" class="com.xiaobo.transaction.OrderDao"> <property name="jdbcTemplate" ref="jdbcTemplate"></property> </bean> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="datasource"></property> </bean>
2.1对类进行注解
//第三步开启注解 @Transactional public class OrderService { public void setOrderDao(OrderDao orderDao) { this.orderDao = orderDao; } private OrderDao orderDao; public void accountchange(){ orderDao.lessmoney(); //制造个异常,事务不能进行,进行回滚 int i=100/0; orderDao.moremoney(); } }
2.2完成
转载于:https://my.oschina.net/u/3745828/blog/1608981
最后
以上就是搞怪柜子为你收集整理的spring的事务管理--idea实现1.基于xml的实现2基于注解的方式的全部内容,希望文章能够帮你解决spring的事务管理--idea实现1.基于xml的实现2基于注解的方式所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复