Ibatis queryWithRowHandler () все еще, кажется, выбирает все строки

0

Я использую Ibatis 2.3.4 и Mysql 5.1.37, с mysql-java-connector 5.1.6 с java 1.6

У меня есть запрос, который возвращает очень много строк из одной таблицы. Для этого в руководстве предлагается использовать queryWithRowHandler(). Однако, когда я вызываю этот запрос, он все еще, кажется, все же извлекает все строки (память ускоряется до первого вызова handleRow()).

Как я могу сказать, что Ibatis забирает небольшие части времени (я могу, конечно, использовать несколько запросов, возвращающих списки меньших результатов, но, на мой взгляд, это именно то, что ибат должен делать для меня)?

EDIT: Я попытался установить fetchSize из 100 для оператора, это, похоже, ничего не делает, то же самое для resultSetType="FORWARD_ONLY". lazyLoadingEnabled не установлен нигде, поэтому должен быть включен.

Теги:
ibatis

1 ответ

1
Лучший ответ

После более тщательного поиска я обнаружил, что руководство mysql в реализации jbdc и база данных mysql имела некоторую полезную информацию. Это сводится к следующему:

Драйвер JDBC нуждается в настройке для использования курсора (это может иметь и некоторые недостатки)

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

Оператору требуются следующие свойства (с любым полезным значением fetchSize).

fetchSize="1000" resultSetType="FORWARD_ONLY"

Ещё вопросы

Сообщество Overcoder
Наверх
Меню