由于之前项目调用的是第三方数据库连接方式,而且工程结构比较混乱。在后续开发中我想跳过这个中间件,所以又融合了Mybatis
最初将获取sqlSession放在一个工具类(DBUtil.java)里如下:
报错:Cause: org.apache.ibatis.executor.ExecutorException: Executor was closed.
研究了半天发现,由于采用静态块模式全局只有一个sqlSession,当某一线程调用时即为独占此连接,之后调用完毕session.close()(不关闭连接肯定是不行的)时就把唯一的连接关闭了,而静态块只能在每次类加载时才会重新执行。
解决办法:
改为公共的SqlSession工厂,所以线程可以从工厂获取和返还 连接。
只作为个人记录,如有帮助不胜荣幸。