Mybatis delete возвращает отрицательное значение.Это почему? - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть следующие определения mybatis mapper и интерфейса:

<delete id="deleteTestSet">
        DELETE FROM projects_test_sets
         WHERE project_id = #{testSet.project.id}
           AND id = #{testSet.id}
    </delete>

и

interface ITestSetRepository {

    Integer deleteTestSet(@Param("testSet") TestSet testSet);

}

При звонке с кодом:

  Integer result = testSetRepository.deleteTestSet(testSet);

Я получаювозвращаемое значение -2147482646 независимо от того, удаляет ли запрос на удаление 0, 1 или несколько записей.

Есть идеи, почему это так?

БД MySQL 5.7.19-17

Mybatis версия: 3.4.6

Спасибо

1 Ответ

0 голосов
/ 03 октября 2018

Когда mybatis BATCH executor используется, операции не выполняются немедленно.Mybatis только фиксирует тот факт, что такая операция должна быть выполнена и их выполнение задерживается.Вот почему метод mapper не может возвращать фактическое количество затронутых записей.Вместо этого он всегда возвращает отрицательно запрограммированную отрицательную константу.

Чтобы получить фактическое количество затронутых строк, вы можете принудительно выполнить пакетное выполнение, используя метод, аннотированный @Flush:

@Flush
List<BatchResult> flush();

.возвращать результат для каждой операции, выполненной в пакете до сих пор.

...