ibatis的queryWithRowHandler()似乎仍然是获取所有的行(Ibatis que

2019-10-29 07:43发布

我使用iBATIS 2.3.4和MySQL 5.1.37,使用MySQL的Java连接器5.1.6与Java 1.6

我有查询从一个表返回很多行。 为了做到这一点,使用手册暗示使用queryWithRowHandler() 然而,当我把这个查询其内部似乎仍获取所有行(内存上涨非常快,第一前handleRow()调用完成。

我怎么能告诉ibatis的当时的部分获取很小(我当然可以用几个查询返回的结果较小的名单,但在我看来,这恰恰是ibatis的应该为我做)?

编辑:我试过设置fetchSize 100的声明,这似乎并没有做任何事情,同为resultSetType="FORWARD_ONLY"lazyLoadingEnabled没有设置任何地方,所以应该允许。

Answer 1:

这样做更彻底的搜索后,我发现, 在JBDC执行MySQL手册和mysql的问题数据库有一些有用的信息。 这归结于需要如下:

JDBC驱动程序需要设置使用光标(这可能有一些缺点太)

  <transactionManager type="JDBC" commitRequired="false">
    <dataSource type="SIMPLE">
       ...
      <property name="Driver.useCursorFetch" value="true"/>
    </dataSource>
  </transactionManager>

该声明需要下列特性(与任何有用的价值FETCHSIZE)。

fetchSize="1000" resultSetType="FORWARD_ONLY"


文章来源: Ibatis queryWithRowHandler() still seems to fetch all rows