);//自动提交
手动提交的话
SqlSession session = sessionFactory.openSession(false);//手动提交,其实就是默认的那种情况
后面去查了一下这个默认提交方式....发现mysql好像数据库本身也有个默认提交方式(自动提交)
发现自动提交可能会产生某些可怕的后果(某些删除操作写错就凉了),所以我决定把mysql的自动提交给关闭掉!(犹豫就会败北!)
有的小伙伴可能会好奇会有什么后果,举个例子:你要删除一个班和一个班的所有学生的时候,你删除一个班的时候没问题,然后删除学生出现了异常停止了,然而你的删除班级指令已经提交了..然后你会发现你没有了家(学生还在,班级没了)~~~~~嘤嘤嘤
p.s. 只有innero db类型的表才可以设置autocommit;
方式一、
禁用步骤:
1、在执行inser / update / delete之前 先执行一个begin;语句,进行了一段时间的数据库操作之后使用commit提交所有操作或者使用rollback回滚所有操作
p.s. 方式一要注意,一次commit或一次rollback表示最近一个begin到此次commit或rollback之间的操作都将提交或回滚,这之后的操作都必须重新设置begin,否则还会继续使用autocommit=ON的策略
方式二、
1、登录mysql数据库
2、set autocommit=‘off‘;
3、查看是否警用: show variables like "autocommit"; (如果是OFF表示禁用成功)
4、执行一段insert / update / delete语句,检查无错误之后commit;这样,这段时间内的所有操作都将提交到数据库中,如果发现执行了不正确的insert / update / delete语句,则使用rollback,此时将会回滚到上一个commit之后数据库的状态
Mybatis的JDBC提交设置/关闭mysql自动提交------关于mysql自动提交引发的惨剧
标签:步骤 数据库操作 插入 一个 回滚 -- 没有 mysql数据库 禁用
小编还为您整理了以下内容,可能对您也有帮助:
我在java里写insert,插入数据到mysql,怎样关闭mysql的自动提交
Connection conn = null;
try
{
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:oracle:thin:@host:1521:SID","username","password");
conn.setAutoCommit(false); //取消自动提交
PreparedStatement ps = conn.prepareCall("update something");
ResultSet rs = ps.executeQuery();
conn.commit(); //手动提交
}
catch (Exception e)
{
conn.rollback();
e.printStackTrace();
}
finally
{
conn.close();
}
如何设置mysql的DDL语句不自动提交
如何设置mysql的DDL语句不自动提交
首先,要看你的表是MYISAM还是INNODB
MYISAM rollback 是没有用的,因为不支持事务,不能回滚。
INNODB rollback 可以回滚。
还有注意的是,mysql默认的是自动提交的。
所以即使你使用的是innodb,比如delete了一行数据,没有commit(系统自动commit了),你rollback也不回恢复,除非你把自动提交关闭了set autocommit=0。
jdbc mybatis hibernate 怎么开启关闭事务
JDBC使用Connection控制事务,它有如下方法:
setAutoCommit(false):开启事务,
commit:提交事务
rollback:回滚事务
--------------------------手动分割线------------------------
MyBatis使用SqlSession控制事务,它提供如下方法
commit:提交事务
rollback:回滚事务
--------------------------手动分割线------------------------
Hibernate使用Tranaction控制事务,提供如下方法
commit:提交事务
rollback:回滚事务
它调用Session的beginTransaction()方法开始事务
但实际开发时都使用Spring 声明式事务来做事务管理,其实这些内容建议你还是要系统学习一下,可以照着“轻量级java web企业应用实战”这本书学习,内容很详细、具体
jdbc mybatis hibernate 怎么开启关闭事务
JDBC使用Connection控制事务,它有如下方法:
setAutoCommit(false):开启事务,
commit:提交事务
rollback:回滚事务
--------------------------手动分割线------------------------
MyBatis使用SqlSession控制事务,它提供如下方法
commit:提交事务
rollback:回滚事务
--------------------------手动分割线------------------------
Hibernate使用Tranaction控制事务,提供如下方法
commit:提交事务
rollback:回滚事务
它调用Session的beginTransaction()方法开始事务
但实际开发时都使用Spring 声明式事务来做事务管理,其实这些内容建议你还是要系统学习一下,可以照着“轻量级java web企业应用实战”这本书学习,内容很详细、具体
MySQL怎么禁用autocommit
MySQL的自动提交默认是开启的,用惯了Oracle,习惯了自己去提交或回滚。我们可以通过set来设置autocommit,过程如下:
Step 1:使用select @@autocommit来查看当前autocommit设置情况,如下图1:
图1:查看autocommit
1表示自动提交是开启的,0表示自动提交是关闭的,图1可看出,当前是处于开启状态。
Step 2:通过set autocommit = 0来关闭autocommit,如下图2:
图2:设置autocommit
还有别的方法来设置,目前我只用了上面的方法。
如何查看和设置Mysql的自动提交
方法/步骤
启动xampp中的mysql
登陆mysql
查看当前的autocommit属性值
命令:
show variables like 'autocommit'\G
更改autocommit
命令:
set autocommit=off;
查看更改后的autocommit值:
命令:
show variables like 'autocommit';
另一种设置autocommit值的途径
命令:
select @@autocommit;
set autocommit=0;