我有以下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
谢谢
答案 0 :(得分:1)
使用mybatis BATCH
执行程序时,不会立即执行操作。 Mybatis仅记录该操作应被执行且其执行被延迟的事实。这就是为什么mapper方法无法返回受影响的实际记录数的原因。它总是返回硬编码的负常量。
为了获得受影响的实际行数,您可以使用@Flush
注释的方法强制执行批处理:
@Flush
List<BatchResult> flush();
它将返回到目前为止批量执行的每个操作的结果。