java - 如何插入忽略超过 100 个输入值

标签 java mysql hibernate

我正在学习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 UPDATEINSERT IGNORE 安全得多,因为后者会忽略所有错误,而前者会忽略所有错误只会忽略重复的插入。

希望这有帮助!

关于java - 如何插入忽略超过 100 个输入值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55072974/

相关文章:

java - 事务暂停在 Spring 中如何工作?

java - Hibernate 配置映射

java - Spring REST 中的 SSE 实现

java - <aws-messaging :annotation-driven-queue-listener/>? 的基于 Java 的配置版本是什么

mysql - 如何使用 MySQL 有条件地创建索引?

MySQL连接三张表

java - 意外标记 : part near line 1, 第 155 列 [选择新

java - 如何在 Spring Boot 中使用 CrudRepository 获取 5 个最新帖子

php - 直接将数组插入MySQL数据库

java - 错误 javax.validation.ConstraintViolationException