Java MySQL executeUpdate()在重复密钥更新时为INSERT返回什么?

Java MySQL executeUpdate()在重复密钥更新时为INSERT返回什么?,java,mysql,jdbc,Java,Mysql,Jdbc,我花了大约3个小时上网查了查,但仍然找不到这个问题的答案 java和它还说: 返回:1或SQL数据操作语言的行数 DML语句或2 0表示不返回任何内容的SQL语句 这意味着: 插入不带重复项的1行->1 插入3行,不重复->3 插入3行,其中包含所有重复项,没有更新值->0 插入3行,其中2行不重复,1行重复更新值->3 插入3行,其中2行不重复,1行不更新值->2 或者至少这是我从文档中了解到的 然而,阅读其他问题和StackOverflow让我再次感到困惑,因为它没有描述这种行为,而是描述M

我花了大约3个小时上网查了查,但仍然找不到这个问题的答案

java和它还说:

返回:1或SQL数据操作语言的行数 DML语句或2 0表示不返回任何内容的SQL语句

这意味着:

插入不带重复项的1行->1 插入3行,不重复->3 插入3行,其中包含所有重复项,没有更新值->0 插入3行,其中2行不重复,1行重复更新值->3 插入3行,其中2行不重复,1行不更新值->2 或者至少这是我从文档中了解到的

然而,阅读其他问题和StackOverflow让我再次感到困惑,因为它没有描述这种行为,而是描述MySQL所说的

在重复密钥更新时,如果发生以下情况,则每行受影响的行值为1 该行将作为新行插入,如果更新了现有行,则为2,并且 如果现有行设置为其当前值,则为0

如果前一种行为是使用连接器的Java独有的,而后一种行为是通过直接MySQL操作的,那么这仍然是有意义的,但是正如我前面所说的,我发现答案是它使用第一种或第二种相互矛盾

这对我来说很重要,因为在我的代码中,我在更新许多条目时执行插入,并通过比较返回编号和要修改计数的数组来检查插入是否成功执行

报告说:

使用“重复键更新时”,如果将行作为新行插入,则每行受影响的行值为1,如果更新现有行,则每行受影响的行值为2


编写代码来测试这一点,您将得到答案。描述的compensateOnDuplicateKeyUpdateCounts配置属性也可能会影响您看到的结果。这正是我在问题中编写的内容。java驱动程序表示SQL数据操作语言DML语句的行数,这意味着如果更新现有行,我将得到1而不是2。这并不“暗示”任何这样的事情。它明确指出,如果现有行被更新,您将得到“2”。我指的是Java驱动程序的文档,其中显示了行计数。你说的是MySQL文档,它们是不同的东西。