JAVA Spring 事务管理事务不回滚问题
Spring事务管理事务不回滚
dao层:
@Repository
public class UserDaoImpl implements UserDao {
@Autowired
private JdbcTemplate jdbcTemplate;@Override
public void inmoney(String name, Integer money) {String sql = "update t_user set money=money+? where name=?";jdbcTemplate.update(sql, money, name);
}@Override
public void outmoney(String name, Integer money) {String sql = "update t_user set money=money-? where name=?";jdbcTemplate.update(sql, money, name);
}
}
Service层:
@Servicepublic class UserServiceImpl implements UserService {@Autowiredprivate UserDao userDao;@Overridepublic void zhuangzhang() {userDao.outmoney("aa",10);int i=1/0;userDao.inmoney("bb",10);}}
测试类:
@Component
public class TestAdd {@Test
public void say(){ApplicationContext applicationContext=new ClassPathXmlApplicationContext("beans.xml");UserService userService=applicationContext.getBean(UserService.class);userService.zhuangzhang();
}
}
xml文件配置:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx.xsd">
<!--Spring自动代理-->
<context:annotation-config></context:annotation-config>
<!--开启Spring扫描-->
<context:component-scan base-package="com.zltz"></context:component-scan><context:property-placeholder location="jdbc.properties"></context:property-placeholder><bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"><property name="url" value="${jdbc.url}"></property><property name="password" value="${jdbc.password}"></property><property name="driverClassName" value="${jdbc.driver}"></property><property name="username" value="${jdbc.username}"></property>
</bean><bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"><property name="dataSource" ref="dataSource"></property>
</bean><!--定义事务信息-->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource"></property>
</bean>
<tx:advice id="interceptor" transaction-manager="transactionManager"><tx:attributes><tx:method name="zhuangzhang" propagation="REQUIRED"/></tx:attributes>
</tx:advice>
<aop:config><aop:pointcut id="pois" expression="execution(* com.zltz.service..*(..))"></aop:pointcut><aop:advisor advice-ref="interceptor" pointcut-ref="pois"></aop:advisor>
</aop:config>
</beans>
出现的问题:以上代码没有错误,能跑通(毕竟比较简单),但是出错后数据库数据依旧修改,起初怀疑是
切面没有切入成功,但是数据库第一条SQL能修改数据第二条位执行说明已经切入了,就怀疑是Spring事务没有回滚,后来发现Spring事务正常回滚了,仔细研究了几个小时发现错出在了数据库上(还是基础不牢固),我用的数据库管理工具数SQLyong,在建表时有时候默认的引擎是MyIsAM模式。如图:
这种模式下不支持事务,得修改为InnoDB模式才可以,真是大意失荆州啊(也是学的不够扎实造成的),希望大家不要这样的犯错误,耽误了宝贵的学习时间。
JAVA Spring 事务管理事务不回滚问题相关推荐
- Spring事务管理中异常回滚知识点总结
记录总结Spring核心知识点:事务使用与它的传播机制 目录 前言 问题场景 Spring 管理事务的原理 MySQL中的事务管理 JDBC中的事务管理 Spring 中的事务管理 Spring中的事 ...
- Spring transaction事务之roll back回滚: rollback-for
试验方法: 写一个单元测试,调用一个service层方法(发生对数据库进行写操作的方法--insert.update.delete)即可. applicationContext.xml 样子(如何设置 ...
- java jdbc 回滚_java_详解Java的JDBC API中事务的提交和回滚,如果JDBC连接是在自动提交模式 - phpStudy...
详解Java的JDBC API中事务的提交和回滚 如果JDBC连接是在自动提交模式下,它在默认情况下,那么每个SQL语句都是在其完成时提交到数据库. 这可能是对简单的应用程序,但有三个原因,你可能想关 ...
- Spring事务总结(一) 内部调用事务失效、异常回滚
Spring事务总结(一) 内部调用事务失效.异常回滚 参考文章: (1)Spring事务总结(一) 内部调用事务失效.异常回滚 (2)https://www.cnblogs.com/gss128/p ...
- java pg数据库事务回滚,基于Postgresql 事务的提交与回滚解析
用过oracle或mysql的人都知道在sqlplus或mysql中,做一个dml语句,如果发现做错了,还可以rollback;掉,但在PostgreSQL的psql中,如果执行一个dml,没有先运行 ...
- oracle表结构修改回滚,87.Oracle数据库SQL开发之 修改表内存——数据库事务的提交和回滚...
87.Oracle数据库SQL开发之 修改表内存--数据库事务的提交和回滚 数据库事务(transaction)就是一组SQL语句,这组SQL语句时一个逻辑工作单元. 要永久性的记录事务中SQL语句的 ...
- Java-JDBC【之】事务介绍、事务特性、操作事务(事务提交、异常回滚)
Java-JDBC[之]事务介绍.事务特性.操作事务(事务提交.异常回滚) 1.数据库事务 1.1.介绍 1.2.事务特性(ACID) 1.3.隔离性(Isolation),带来的问题与处理 1.4. ...
- MySQL:事务:开启、回滚与提交
这里,我们使用 set session autocommit=0,修改当前会话的事务提交方式.autocommit变量有两个可选值:ON与OFF,ON代表事务是自动提交,OFF代表不自动提交.roll ...
- spring 事务控制 设置手动回滚 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
如上: 当我们需要在事务控制的service层类中使用try catch 去捕获异常后,就会使事务控制失效,因为该类的异常并没有抛出,就不是触发事务管理机制.怎样才能即使用try catch去捕获异常 ...
最新文章
- 关于error:Cannot assign to 'self' outside of a method in the init family
- Spring MVC POST中文乱码解决方案
- UA OPTI570 量子力学18 量子谐振子基础
- jinja Template Synopsis
- 【运筹学】【如何使用Excel求解线性规划】
- matlab生成16进制正弦波表
- 通达OA 一个正式用户被提示软件试用过期的问题处理(图文)
- iOS 15 越狱情报
- 基于随机森林实现特征选择降维及回归预测(Matlab代码实现)
- arm模拟器手机版_基于ARM的模拟器
- 乔布斯在斯坦福大学的毕业典礼上做的一次精彩的演讲
- 浏览器被劫持怎么办,详细讲解浏览器DNS被劫持的解决方法
- Js网络视频播放器之VideoJsckplayer(直播拉流rtmp、hls)
- Echarts实战案例代码(9):图表纹理填充的解决方案(柱图为例)
- 计算机毕业设计 SSM+Vue前台点菜订餐平台系统 餐饮点餐订单管理系统 外卖点餐团购平台管理系统Java Vue MySQL数据库 远程调试 代码讲解
- 巴贝奇、阿达和他们的差分机
- 决策树(Decision Tree)算法原理总结(一)
- 《圣斗士星矢》的武士道精神
- 重磅!2019年中国科学院院士增选当选院士名单公布
- wamp环境下如何安装composer?
热门文章
- VB初学者实例50例
- 云场景实践研究第81期:大搜车
- Linux 三剑客(grep、sed、awk)
- maven中生成文件时缺少proprieties文件解决,输入流读取properties文件 总是为null
- Java毕设项目OA办公系统
- OutLook中的live.cn(吐血配置)
- 黑马服务器开发之linux基础编程视频——笔记
- postgis+geoserver+openlayers最短路径分析-学习记录bug
- java发邮件出现535错误,Java邮件发送的几个常见错误及异常
- Arduino通过USB转TTL无BootLoader烧录程序的两种办法