
好吧,我进行了一些测试。使用Connector / J 5.1和MySQL 5.1.42,我观察到以下几点:
Statement.getGeneratedKeys()
可以预期插入如果插入或更新了一行(返回的更新计数数组
executeBatch()
返回‘1’或‘2’),Statement.getGeneratedKeys()
则将具有该行的键。如果该行未修改(insert ignore
或者insert ... on duplicate key update
导致无 *** 作,则executeBatch()
返回3
),则没有键。返回的ResultSet
getGeneratedKeys
将具有(2)中成功插入的行的条目。失败的插入将不会生成密钥行(更新计数值为Statement.EXECUTE_FAILED
)?
小心使用
rewriteBatchedStatements
JDBC连接字符串。如果将其设置为true
,则任何失败都将导致重写的“块”中的每一行都被视为失败。解决此问题的一种方法是遍历失败的行,然后不进行批处理而重试它们。?
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)