解决过程:
1、初始方案
在我们没有开启事务的时候,如果使用mybatis,我们会在日志中看到如下的内容:“Closing non transactional SqlSession”,这种情况说明没有开启Spring的事务管理,因此才会关闭一个非事务的SqlSession。
那么如何开启事务管理呢?最简单的方式就是添加下面两条配置:
<!-- 配置事务管理器 -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager"
p:dataSource-ref="dataSource" />
<!-- 指明使用注解的方式来管理事务 -->
<tx:annotation-driven transaction-manager="transactionManager" />
<!-- 配置事务管理器 -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager"
p:dataSource-ref="dataSource" />
<!-- 指明使用注解的方式来管理事务 -->
<tx:annotation-driven transaction-manager="transactionManager" />
然后我们在需要加事务管理的Service中添加@Transactional注解,我们就会在日志中看到如下效果了:
Releasing transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@368214f9]
[DEBUG][2017/08/22 10:38:34132][org.mybatis.spring.SqlSessionUtils$SqlSessionSynchronization.beforeCommit(SqlSessionUtils.java:284)]
Transaction synchronization committing SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@368214f9]
[DEBUG][2017/08/22 10:38:34132][org.mybatis.spring.SqlSessionUtils$SqlSessionSynchronization.beforeCompletion(SqlSessionUtils.java:310)]
Transaction synchronization deregistering SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@368214f9]
[DEBUG][2017/08/22 10:38:34133][org.mybatis.spring.SqlSessionUtils$SqlSessionSynchronization.beforeCompletion(SqlSessionUtils.java:315)]
Transaction synchronization closing SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@368214f9]
[DEBUG][2017/08/22 10:38:34133][org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:759)]
Initiating transaction commit
但是用这个方法并没有解决我的问题,通过以下方法解决
2、我自己解决的方法
当我遇到这个异常时也在网上找解决方法,可没有解决,最后发现是自己操作的问题
我们都运行过sql文件 如图 ,如果我们有sql文件,都是右键运行sql文件。
可有时运行时表会跑到系统自带的数据库,如springboot-vue库,这时我们去程序操作,就会报Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@38e46e4a]文章来源:https://www.toymoban.com/news/detail-660785.html
最后发现把系统数据库的表删除,重新建个数据库放表就解决问题了。这是我遇到这个异常的解决方法、希望对初学者有所帮助。文章来源地址https://www.toymoban.com/news/detail-660785.html
3、重新建个数据库放表就解决问题了
到了这里,关于解决Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlS..(22.11.20)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!