如何使用100多个输入值插入忽略

时间:2019-03-09 01:00:39

标签: java mysql hibernate

我正在学习Java休眠, 找到了“插入忽略”的示例,

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字符串组成的列表,找出一些不在现有表中的字符串,而无需使用循环。

1 个答案:

答案 0 :(得分:0)

您可以使用MySQL ON DUPLICATE KEY UPDATE功能。

例如:

INSERT INTO TABLA (ID, VAR) VALUES (1, 1), (2, 2), ... ON DUPLICATE KEY UPDATE ID=ID;

我不熟悉Java或休眠模式,因此我的回答是原始查询。如果您需要帮助找出确切的语法,this问题可能是解决问题的好资源。

一般来说,ON DUPLICATE KEY UPDATEINSERT IGNORE安全得多,因为后者将忽略所有错误,而前者将仅忽略重复的插入内容。

希望这会有所帮助!