解决问题记录:Cause: org.apache.ibatis.executor.ExecutorException: Executor was closed

由于之前项目调用的是第三方数据库连接方式,而且工程结构比较混乱。在后续开发中我想跳过这个中间件,所以又融合了Mybatis

最初将获取sqlSession放在一个工具类(DBUtil.java)里如下:

解决问题记录:Cause: org.apache.ibatis.executor.ExecutorException: Executor was closed_第1张图片

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

研究了半天发现,由于采用静态块模式全局只有一个sqlSession,当某一线程调用时即为独占此连接,之后调用完毕session.close()(不关闭连接肯定是不行的)时就把唯一的连接关闭了,而静态块只能在每次类加载时才会重新执行。

解决办法:

解决问题记录:Cause: org.apache.ibatis.executor.ExecutorException: Executor was closed_第2张图片

改为公共的SqlSession工厂,所以线程可以从工厂获取和返还 连接。

只作为个人记录,如有帮助不胜荣幸。

你可能感兴趣的:(解决问题记录:Cause: org.apache.ibatis.executor.ExecutorException: Executor was closed)