当前位置: 代码网 > it编程>编程语言>Java > 解决myBatis中openSession()自动提交的问题

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

2024年09月27日 Java 我要评论
自动提交问题跟着小破站视频写的代码,却发现我的插入操作自动提交了(视频中需要手动提交);猜测是mybatis中有设置为自动提交的方法,于是百度了一下,果然mybatis中自动提交设置opensessi

自动提交问题

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

猜测是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才能生效

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com