java - 如何使用 100 多个输入值插入忽略
问题描述
我正在学习 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+ var 作为输入,但只有 1 或 2 个不会出现在现有表中,我不知道哪些。
如果我使用循环设置 100 个值的参数,它可能会起作用。但有更好的可能吗?鉴于我可能只需要插入其中的 1 或 2 个。
或者我应该问这个:给定一个包含 100 个 var 字符串的列表,找出一些不在现有表中的字符串,而不使用循环。
解决方案
您可以使用 MySQLON DUPLICATE KEY UPDATE
功能。
例如:
INSERT INTO TABLA (ID, VAR) VALUES (1, 1), (2, 2), ... ON DUPLICATE KEY UPDATE ID=ID;
我不熟悉 java 或 hibernate,因此我的回答是原始查询。如果您需要帮助找出确切的语法, 这个问题可能是一个很好的资源。
而且,一般来说,ON DUPLICATE KEY UPDATE
比后者更安全,INSERT IGNORE
因为后者会忽略所有错误,而前者只会忽略重复插入。
希望这可以帮助!
推荐阅读
- asp.net - 使用 textchanged 回发后保持 Tab 索引
- html - 将页面中的元素列表居中
- javascript - Vue.js 将方法从父级传递给子级
- forms - MS Access - 报告到 PDF - 数据字段未填充在 PDF 的控件中
- python-3.x - 如何在 Py3 中检索 argv ORIGINAL 字节数据?
- linux - Unix - 将 IP 字段更改为 csv 并输出新文件
- php - PHP 查询 - 进入流程
- php - 受限制的 HTML 页面(使用 PHP)(安全吗?)
- yii2 - cKeditor 和 Elfinder 不会将文件加载到资产
- c# - 服务器不可用 503 - WebClient.DownloadData