刘老师你好:
我在结果映射中使用了collection,一对多嵌套查询,dbcp连接池;
但是间隔一段时间再访问就会出现异常: java.sql.SQLException: No operations allowed after statement closed.
再重新请求一次就好了,添加以下配置也没能解决:
<!--指定数据库的默认自动提交-->
<property name="defaultAutoCommit" value = "true" />
<!--是否自动回收超时连接-->
<property name="removeAbandoned" value="true" />
<!--超时时间(以秒数为单位)-->
<property name="removeAbandonedTimeout" value="10" />
<!--记录中断事件 -->
<property name="logAbandoned" value="true" />
<!-- 池中的连接空闲30分钟后被回收 -->
<property name="minEvictableIdleTimeMillis" value="1800000" />
<!-- some positive integer -->
<property name="timeBetweenEvictionRunsMillis" value="30000" />
<!--取得对象时是否进行验证,检查对象是否有效 -->
<property name="testOnBorrow" value="true" />
<!--空闲时是否进行验证,检查对象是否有效 -->
<property name="testWhileIdle" value="true" />
<!--返回对象时是否进行验证 -->
<property name="testOnReturn" value="true"/>
<property name="validationQuery" value="select 1" />
<!-- 下面这两个属性属于优化部分,加上这两个属性可以提高整体的响应时间 -->
<!-- 表明是否开启statement cache,默认为false,也就是不开启 -->
<property name="poolPreparedStatements" value="true" />
<!-- statement cache的大小,默认为-1,也就是不限制 -->
<property name="maxOpenPreparedStatements" value="10" />
<!-- 在每次空闲连接回收器线程(如果有)运行时检查的连接数量 -->
<property name="numTestsPerEvictionRun" value="1" />
这个嵌套查询时间是否过长?你这里设置的超时时间是10秒。