Java Ibatis queryWithRowHandler()似乎仍能获取所有行
我正在使用iBATIS2.3.4和Mysql 5.1.37,Mysql java connector 5.1.6和java 1.6 我有一个从一个表返回很多行的查询。为此,手册建议使用Java Ibatis queryWithRowHandler()似乎仍能获取所有行,java,mysql,ibatis,Java,Mysql,Ibatis,我正在使用iBATIS2.3.4和Mysql 5.1.37,Mysql java connector 5.1.6和java 1.6 我有一个从一个表返回很多行的查询。为此,手册建议使用queryWithRowHandler()。然而,当我在内部调用这个查询时,它似乎仍然会获取所有行(在第一次handleRow()调用完成之前,内存增长非常快) 我如何告诉Ibatis在时间段获取较小的结果(我当然可以使用几个查询返回较小结果的列表,但我认为这正是Ibatis应该为我做的) 编辑: 我已尝试将语句的
queryWithRowHandler()
。然而,当我在内部调用这个查询时,它似乎仍然会获取所有行(在第一次handleRow()
调用完成之前,内存增长非常快)
我如何告诉Ibatis在时间段获取较小的结果(我当然可以使用几个查询返回较小结果的列表,但我认为这正是Ibatis应该为我做的)
编辑:
我已尝试将语句的
fetchSize
设置为100,这似乎没有任何作用,对于resultsetype=“FORWARD\ONLY”也一样
lazyLoadingEnabled
没有设置在任何位置,因此应该启用。在进行更彻底的搜索后,我发现和有一些有用的信息。这归结为需要以下内容:
JDBC驱动程序需要一个设置来使用游标(这可能也有一些缺点)
<transactionManager type="JDBC" commitRequired="false">
<dataSource type="SIMPLE">
...
<property name="Driver.useCursorFetch" value="true"/>
</dataSource>
</transactionManager>
fetchSize="1000" resultSetType="FORWARD_ONLY"