我正在学习Java hibernate, 找到了一个“插入忽略”的例子,
Query query = getSession().createSQLQuery("INSERT IGNORE INTO TABLA (ID, VAR) VALUES (:id, :var)");
UUID id = UUID.randomUUID();
query.setParameter("id", id);
String var = "abcde";
query.setParameter("var", var);
query.executeUpdate();
这将“插入忽略”1 个条目。 我可能有 100 多个变量作为输入,但只有 1 或 2 个不会出现在现有表中,我不知道是哪些。
如果我用循环设置 100 个值的参数,它可能会起作用。但还有更好的可能吗?鉴于我可能只需要插入其中的 1 或 2 个。
或者我应该问这个:给定一个包含 100 个 var 字符串的列表,找出一些不在现有表中的字符串,而不使用循环。
最佳答案
您可以使用 MySQL ON DUPLICATE KEY UPDATE
功能。
例如:
INSERT INTO TABLA (ID, VAR) VALUES (1, 1), (2, 2), ... ON DUPLICATE KEY UPDATE ID=ID;
我不熟悉 java 或 hibernate,因此我的答案是原始查询。如果您需要帮助确定确切的语法,this问题可能是一个很好的资源。
此外,一般来说,ON DUPLICATE KEY UPDATE
比 INSERT IGNORE
安全得多,因为后者会忽略所有错误,而前者会忽略所有错误只会忽略重复的插入。
希望这有帮助!
关于java - 如何插入忽略超过 100 个输入值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55072974/