springjdbctemplate手动式事务无法回滚

1 篇文章 0 订阅
1 篇文章 0 订阅

最近开发中用到了springjdbctemplate来持久化数据,想通过代码控制事务的回滚和提交,但是所有配置一切正常的情况下就是不能实现回滚,查看了datasource和transactionManager配置都没有问题,但是就不给回滚,手动回滚代码如下:

   

 

public void insertUser() {

  TransactionTemplate tt = new TransactionTemplate(getTransactionManager());

     tt.execute(new TransactionCallback() {

    public Object doInTransaction(TransactionStatus status) {

       JdbcTemplate jt = new JdbcTemplate(executeTestSource());

jt.execute("insert into `srp_keyword_info` (`kid`, `keyname`, `type`, " +

"`synword`, `srpid`, `differflag`) " +

"values ('11', '1', '11', '1', '1', '1')");

jt.execute("insert into `srp_keyword_info` (`kid`, `keyname`, `type`, " +

"`synword`, `srpid`, `differflag`) " +

"values ('11', '1', '11', '1', '1', '1','2')");

   String ss = null;

   System.out.println(ss.toCharArray());

   return null;

}

});

}

 

配置正确,但是不回滚这是为什么呢,纠结了一下午,终于找到了答案,原因尽然是:

mysql的表是有事务安全( 比如:InnoDB)和非事务安全(比如:ISAM、MyISAM)之分的,所以你当前表的事务类型是ISAM、或是MyISAM其中的一种,只要修改为InnoDB就可以了,MyISAM是非事务安全的,所以无法实现数据回滚。 只要修改表的类型即可:

     alter table tablename type=InnoDb

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值