解决myBatis中openSession()自动提交的问题

 更新时间:2024年09月27日 14:19:10   作者:xiaqin149  
在学习MySQL过程中,发现插入操作自动提交,问题原因可能是myBatis中的openSession()方法设置了自动提交,或者是MySQL的默认引擎设置为不支持事务的MyISAM,解决办法包括更改myBatis的提交设置或将MySQL表的引擎改为InnoDB

自动提交问题

跟着小破站视频写的代码,却发现我的插入操作自动提交了(视频中需要手动提交);

猜测是myBatis中有设置为自动提交的方法,于是百度了一下,果然

myBatis中自动提交设置

openSession() 方法有带参数为 autoCommit 的布尔值,即是否自动提交可以手动控制的。

  • 当openSession(true),即括号内为true的时候,mybaits是可以自动提交修改后的数据的
  • 当openSession(),即括号内为空(或false),为手动提交,需要最后调用 session.commit() 来完成数据更新操作

查完之后又看了一遍源码,发现我写的确实是openSession();里面并未添加true;然后又看了几篇csdn上的攻略还是没能解决问题

真实原因

最后想是不是MySQL的引擎问题呢,一开始我觉得应该不是,因为创表的时候我特意改过表的引擎就是为了能进行事务操作,所以应该是没问题的

emmmmm........ 不应当(晕)

然后看了我当时写的源码:

ALTER TABLE salgrade ENGINE = InnoDb;

好吧,是我写错了(也不知道为啥这里我总写错,这个好像ALTER TABLE 这些要大写,反正之前写小写不对),用了代码提示里的表,表改错了(晕),下次直接Navicat吧还是

最终解决方案

把t_student表的引擎改为InnoDB,就能解决问题了

MySQL的所有引擎中只有InnoDB支持事务,别的都会自动提交,所以如果需要实现事务功能,务必保证表的引擎为InnoDB哦

更改默认引擎

我百度了一下,说mysql-5.1版本之前默认引擎是MyISAM,之后是innoDB,但是我的默认却是MyISAM,不知道为啥(也有可能是我百度错了)

然后想着一劳永逸,直接把默认引擎改了得了,过程也不复杂;

在配置文件my.ini中的找到default-storage-engine,此时默认为MyISAM将等号后改为INNODB即可,当然这要先重启MySQL才能生效

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • SpringBoot整合log4j日志与HashMap的底层原理解析

    SpringBoot整合log4j日志与HashMap的底层原理解析

    这篇文章主要介绍了SpringBoot整合log4j日志与HashMap的底层原理,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • 深入了解Java atomic原子类的使用方法和原理

    深入了解Java atomic原子类的使用方法和原理

    这篇文章主要介绍了深入了解Java atomic原子类的使用方法和原理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,,需要的朋友可以参考下
    2019-06-06
  • Java陷阱之慎用入参做返回值详解

    Java陷阱之慎用入参做返回值详解

    这篇文章主要给大家介绍了关于Java陷阱之慎用入参做返回值的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • Java数组添加元素实例

    Java数组添加元素实例

    这篇文章主要介绍了Java数组添加元素实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • Java实现多个单张tif文件合并成一个多页tif文件

    Java实现多个单张tif文件合并成一个多页tif文件

    业务部门需要将多个单张的tiff文件,合并成一个多页的tiff文件,本文就来介绍一下如何实现,具有一定的参考价值,感兴趣的可以了解一下
    2023-09-09
  • Java Stream的基本概念以及创建方法

    Java Stream的基本概念以及创建方法

    这篇文章主要介绍了Java Stream的基本概念以及创建方法,帮助大家更好的理解和学习Java,感兴趣的朋友可以了解下
    2020-08-08
  • Java之Jackson使用案例详解

    Java之Jackson使用案例详解

    这篇文章主要介绍了Java之Jackson使用案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • 深入理解Java设计模式之解释器模式

    深入理解Java设计模式之解释器模式

    这篇文章主要介绍了JAVA设计模式之解释器模式的的相关资料,文中示例代码非常详细,供大家参考和学习,感兴趣的朋友可以了解
    2021-11-11
  • Java实现读取文件夹下(包括子目录)所有文件的文件名

    Java实现读取文件夹下(包括子目录)所有文件的文件名

    这篇文章主要介绍了Java实现读取文件夹下(包括子目录)所有文件的文件名,本文把代码组织成了一个模块,可以很方便的使用,需要的朋友可以参考下
    2015-06-06
  • Java 在Excel单元格中应用一种/多种字体样式(实例代码)

    Java 在Excel单元格中应用一种/多种字体样式(实例代码)

    这篇文章主要介绍了Java 在Excel单元格中应用一种/多种字体样式,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-12-12

最新评论