由于在For循环里面频繁调用数据库查询,导致过多的preparedStatement而未及时关闭,造成游标数超过限制
修改dataSource的配置,将poolPreparedStatements改为false解决(无论ibatis和jdbc都好使了)。
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@*****:***"/>
<property name="username" value="admin"/>
<property name="password" value="******"/>
<property name="maxActive" value="50"/>
<property name="maxWait" value="20"/>
<property name="poolPreparedStatements" value="false"/>
<property name="defaultAutoCommit" value="true"/>
</bean>