最近在搞oracle数据库,搭了个项目,springboot+mybatis+oracle。发现插入数据时,感觉像陷入死循环了一样,不报错,表中却没有数据。想了半天,会不会是因为没有添加事务的原因造成的,然后我就在service里面的新增记录的方法上面加了个@Transactional
,这次还真插入成功了。
可是,之前使用mysql数据库,我的service方法上面没有添加@Transactional
注解也能正常插入数据呀!!!。
为此,我特地修改了原来项目的jdbc连接,连接到mysql。
后来,我发现新增、更新、删除数据,其实mysql、oracle都要提交事务的。为什么在使用mysql的项目中不用提交事务都行呢?
是因为mysql数据库开启了自动提交。可以使用以下命令查询你的mysql是否开启了自动提交。
show variables like '%autocommit%';
总结
mysql、oracle(或许其他关系型数据库也一样)新增、修改、删除数据的操作都需要提交事务。要注意你的mysql是否开启了自动提交事务。事务一定要提交或者回滚了,不然会修改不了同一个记录。