首页 热点资讯 义务教育 高等教育 出国留学 考研考公
您的当前位置:首页正文

Mybatis的JDBC提交设置/关闭mysql自动提交------关于mysql自动提交引发的惨剧

2023-11-12 来源:华拓网

);//自动提交

手动提交的话

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;

显示全文