Отрицательное fetchSize
- не поддерживается JDBC. Вот описание исключений, которые setFetchSize
выбрасывает:
SQLException - если возникает ошибка доступа к базе данных, этот метод вызывается в закрытом операторе или строки условий> = 0 не выполняются.
Причиной ошибки является неправильный размер выборки (outOfRangeArgument
в трассировке стека также предполагает это).
Драйвер mysql поддерживает Integer.MIN_INT
в качестве размера выборки, чтобы указать, что набор результатов находится в режиме потоковой передачи:
Комбинация прямого и только для чтения результирующего набора с размером выборки Integer.MIN_VALUE служит сигналом для драйвера для потоковой передачи результирующих наборов построчно. После этого любые результирующие наборы, созданные с помощью оператора, будут извлекаться построчно.
mybatis сам по себе не позволяет параметризовать fetchSize
в конфигурации картографа.
Вам необходимо использовать некоторые приемы для переопределения конфигурации с помощью AspectJ
или PowerMock
. С PowerMock
вы можете использовать PowerMock.stub
, чтобы сделать что-то подобное, прежде чем вызывать метод, выполняющий запрос:
PowerMock.stub(
PowerMock.method(
org.apache.ibatis.mapping.MappedStatement.class,
"getFetchSize"
)
).toReturn(1);
Таким образом, когда mybatis создаст Statement
, он будет использовать фиктивное значение для fetchSize