Mybatis删除返回负值。这是为什么?

时间:2018-09-27 14:59:31

标签: mysql mybatis

我有以下mybatis映射器和接口定义:

<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);

无论删除查询是删除0、1还是多个条目,我都得到返回的结果值-2147482646。

有人知道为什么吗?

数据库为MySQL 5.7.19-17

Mybatis版本:3.4.6

谢谢

1 个答案:

答案 0 :(得分:1)

使用mybatis BATCH执行程序时,不会立即执行操作。 Mybatis仅记录该操作应被执行且其执行被延迟的事实。这就是为什么mapper方法无法返回受影响的实际记录数的原因。它总是返回硬编码的负常量。

为了获得受影响的实际行数,您可以使用@Flush注释的方法强制执行批处理:

@Flush
List<BatchResult> flush();

它将返回到目前为止批量执行的每个操作的结果。