我有以下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);

我得到返回的结果值-2147482646,无论删除查询删除0、1或多个条目。
知道为什么吗?
数据库是MySQL 5.7.19-17
Mybatis版本:3.4.6
谢谢

最佳答案

当mybatisBATCH使用executor时,不会立即执行操作。Mybatis只记录这样的操作应该被执行并且它们的执行被延迟的事实。这就是为什么mapper方法不能返回受影响的实际记录数。它总是返回硬编码的负常量。
为了获得实际受影响行数,可以使用注释为@Flush的方法强制批处理执行:

@Flush
List<BatchResult> flush();

它将返回迄今为止在批处理中执行的每个操作的结果。

10-07 19:01
查看更多