我有以下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();
它将返回迄今为止在批处理中执行的每个操作的结果。