Моя цель - сбросить все данные из базы данных в XML-файл. База данных не очень большая, около 300 МБ.Проблема в том, что у меня ограничение памяти 256 МБ (в JVM). Очевидно, я не могу просто прочитать все в памяти.
Мне удалось решить эту проблему с помощью iBatis (да, я имею в виду iBatis, а не myBatis), вызвав его getList (... int skip, int max)
несколько раз, с увеличенным skip
. Это решает мою проблему с памятью, но меня не впечатляет скорость. Имена переменных предполагают, что то, что делает метод под капотом, - это чтение всего набора результатов с пропуском указанной записи. Для меня это звучит излишне (я не говорю, что метод делает, я просто предполагаю, исходя из имени переменной).
Теперь я переключился на myBatis 3 для следующей версии моего приложения. Мой вопрос: есть ли лучший способ обрабатывать большие объемы данных по частям в myBatis? Есть ли способ заставить myBatis обрабатывать первые N записей, возвращать их вызывающей стороне, сохраняя при этом соединение набора результатов открытым, чтобы в следующий раз, когда пользователь вызовет getList (...), он начнет чтение из записи N + 1 без каких-либо действий "пропуск"?