Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@4dc9ada0]
时间: 2023-12-04 16:41:51 浏览: 60
这个问题通常出现在MyBatis中,它表示SqlSession没有被正确关闭。SqlSession是一个非常重要的资源,如果没有正确关闭,会导致内存泄漏和数据库连接池的资源耗尽。以下是一些可能的解决方案:
1.使用try-with-resources语句自动关闭SqlSession:
```java
try (SqlSession session = sqlSessionFactory.openSession()) {
// do something
}
```
2.手动关闭SqlSession:
```java
SqlSession session = sqlSessionFactory.openSession();
try {
// do something
} finally {
session.close();
}
```
3.在MyBatis配置文件中添加以下配置:
```xml
<configuration>
<settings>
<setting name="aggressiveLazyLoading" value="false"/>
<setting name="lazyLoadingEnabled" value="false"/>
<setting name="multipleResultSetsEnabled" value="true"/>
<setting name="useColumnLabel" value="true"/>
<setting name="useGeneratedKeys" value="false"/>
<setting name="autoMappingBehavior" value="PARTIAL"/>
<setting name="defaultExecutorType" value="SIMPLE"/>
<setting name="defaultStatementTimeout" value="25"/>
<setting name="cacheEnabled" value="true"/>
<setting name="callSettersOnNulls" value="true"/>
<setting name="jdbcTypeForNull" value="OTHER"/>
<setting name="logImpl" value="LOG4J"/>
<setting name="mapUnderscoreToCamelCase" value="false"/>
<setting name="closeOnCompletion" value="true"/>
</settings>
</configuration>
```