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 事务管理事务不回滚问题相关推荐

  1. Spring事务管理中异常回滚知识点总结

    记录总结Spring核心知识点:事务使用与它的传播机制 目录 前言 问题场景 Spring 管理事务的原理 MySQL中的事务管理 JDBC中的事务管理 Spring 中的事务管理 Spring中的事 ...

  2. Spring transaction事务之roll back回滚: rollback-for

    试验方法: 写一个单元测试,调用一个service层方法(发生对数据库进行写操作的方法--insert.update.delete)即可. applicationContext.xml 样子(如何设置 ...

  3. java jdbc 回滚_java_详解Java的JDBC API中事务的提交和回滚,如果JDBC连接是在自动提交模式 - phpStudy...

    详解Java的JDBC API中事务的提交和回滚 如果JDBC连接是在自动提交模式下,它在默认情况下,那么每个SQL语句都是在其完成时提交到数据库. 这可能是对简单的应用程序,但有三个原因,你可能想关 ...

  4. Spring事务总结(一) 内部调用事务失效、异常回滚

    Spring事务总结(一) 内部调用事务失效.异常回滚 参考文章: (1)Spring事务总结(一) 内部调用事务失效.异常回滚 (2)https://www.cnblogs.com/gss128/p ...

  5. java pg数据库事务回滚,基于Postgresql 事务的提交与回滚解析

    用过oracle或mysql的人都知道在sqlplus或mysql中,做一个dml语句,如果发现做错了,还可以rollback;掉,但在PostgreSQL的psql中,如果执行一个dml,没有先运行 ...

  6. oracle表结构修改回滚,87.Oracle数据库SQL开发之 修改表内存——数据库事务的提交和回滚...

    87.Oracle数据库SQL开发之 修改表内存--数据库事务的提交和回滚 数据库事务(transaction)就是一组SQL语句,这组SQL语句时一个逻辑工作单元. 要永久性的记录事务中SQL语句的 ...

  7. Java-JDBC【之】事务介绍、事务特性、操作事务(事务提交、异常回滚)

    Java-JDBC[之]事务介绍.事务特性.操作事务(事务提交.异常回滚) 1.数据库事务 1.1.介绍 1.2.事务特性(ACID) 1.3.隔离性(Isolation),带来的问题与处理 1.4. ...

  8. MySQL:事务:开启、回滚与提交

    这里,我们使用 set session autocommit=0,修改当前会话的事务提交方式.autocommit变量有两个可选值:ON与OFF,ON代表事务是自动提交,OFF代表不自动提交.roll ...

  9. spring 事务控制 设置手动回滚 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();

    如上: 当我们需要在事务控制的service层类中使用try catch 去捕获异常后,就会使事务控制失效,因为该类的异常并没有抛出,就不是触发事务管理机制.怎样才能即使用try catch去捕获异常 ...

最新文章

  1. 关于error:Cannot assign to 'self' outside of a method in the init family
  2. Spring MVC POST中文乱码解决方案
  3. UA OPTI570 量子力学18 量子谐振子基础
  4. jinja Template Synopsis
  5. 【运筹学】【如何使用Excel求解线性规划】
  6. matlab生成16进制正弦波表
  7. 通达OA 一个正式用户被提示软件试用过期的问题处理(图文)
  8. iOS 15 越狱情报
  9. 基于随机森林实现特征选择降维及回归预测(Matlab代码实现)
  10. arm模拟器手机版_基于ARM的模拟器
  11. 乔布斯在斯坦福大学的毕业典礼上做的一次精彩的演讲
  12. 浏览器被劫持怎么办,详细讲解浏览器DNS被劫持的解决方法
  13. Js网络视频播放器之VideoJsckplayer(直播拉流rtmp、hls)
  14. Echarts实战案例代码(9):图表纹理填充的解决方案(柱图为例)
  15. 计算机毕业设计 SSM+Vue前台点菜订餐平台系统 餐饮点餐订单管理系统 外卖点餐团购平台管理系统Java Vue MySQL数据库 远程调试 代码讲解
  16. 巴贝奇、阿达和他们的差分机
  17. 决策树(Decision Tree)算法原理总结(一)
  18. 《圣斗士星矢》的武士道精神
  19. 重磅!2019年中国科学院院士增选当选院士名单公布
  20. wamp环境下如何安装composer?

热门文章

  1. VB初学者实例50例
  2. 云场景实践研究第81期:大搜车
  3. Linux 三剑客(grep、sed、awk)
  4. maven中生成文件时缺少proprieties文件解决,输入流读取properties文件 总是为null
  5. Java毕设项目OA办公系统
  6. OutLook中的live.cn(吐血配置)
  7. 黑马服务器开发之linux基础编程视频——笔记
  8. postgis+geoserver+openlayers最短路径分析-学习记录bug
  9. java发邮件出现535错误,Java邮件发送的几个常见错误及异常
  10. Arduino通过USB转TTL无BootLoader烧录程序的两种办法