Обработка очень большого количества данных в MyBatis

Моя цель - сбросить все данные из базы данных в XML-файл. База данных не очень большая, около 300 МБ.Проблема в том, что у меня ограничение памяти 256 МБ (в JVM). Очевидно, я не могу просто прочитать все в памяти.

Мне удалось решить эту проблему с помощью iBatis (да, я имею в виду iBatis, а не myBatis), вызвав его getList (... int skip, int max) несколько раз, с увеличенным skip . Это решает мою проблему с памятью, но меня не впечатляет скорость. Имена переменных предполагают, что то, что делает метод под капотом, - это чтение всего набора результатов с пропуском указанной записи. Для меня это звучит излишне (я не говорю, что метод делает, я просто предполагаю, исходя из имени переменной).

Теперь я переключился на myBatis 3 для следующей версии моего приложения. Мой вопрос: есть ли лучший способ обрабатывать большие объемы данных по частям в myBatis? Есть ли способ заставить myBatis обрабатывать первые N записей, возвращать их вызывающей стороне, сохраняя при этом соединение набора результатов открытым, чтобы в следующий раз, когда пользователь вызовет getList (...), он начнет чтение из записи N + 1 без каких-либо действий "пропуск"?

11
задан Community 22 September 2017 в 17:44
поделиться