奋斗男孩12138 2021-12-24 14:46 采纳率: 50%
浏览 24

org.apache.ibatis.executor.ExecutorException:Executor was closed 报错

在业务层接口实现类只创建了一个sqlsession全局对象,在业务层每个操作方法中都调用了这个对象,在第一次调用后容易更改sqlSession对象,导致对象被关闭,随后在其他方法继续调用这个对象sqlSession已经被关闭了,不会创建新的sqlSession,只会在类加载时创建唯一一次,所以才会报执行人已经被关闭的错误。

这个问题的解决方法:在每个操作数据库的方法中都去定义一个SQLSession工厂对象。

那为什么每个操作数据库的方法中都去定义一个SQLSession工厂对象。就不会关闭呢

  • 写回答

1条回答 默认 最新

  • a1767028198 2021-12-24 14:53
    关注

    了解下mybatis和spring整合以后,在一个事务中,怎么处理sqlsession的,你就知道了为啥了
    不想了解记住就行,整合到spring以后,非事务的场景,一个db操作就换个新的sqlsession,别人的sqlsession与你无关(ps:这也就是非事务下,mybatis交给spring管理以后,一级缓存失效的原因)

    评论

报告相同问题?

问题事件

  • 创建了问题 12月24日

悬赏问题

  • ¥15 千牛PC端客服工作台的Js调用成品或定制
  • ¥20 在同一个包中,无法引用自己创建的类,换台电脑又可以
  • ¥15 各位帮我看看为什么我写的代码按钮按了没有反应,deveco studio,
  • ¥20 云南省制造业对经济增长的影响目录应该怎么罗列,就是现状那部分
  • ¥15 求一套完整的纵横四海程序。
  • ¥20 AD7606采集到电压乱飘,怎么解决呢
  • ¥60 有没有人查监控方面厉害的呢
  • ¥15 绑住完成C语言的任务
  • ¥20 vue项目打包Android apk,实现小说文本朗读功能
  • ¥15 搜索快速上排名SEO