我正在学习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字符串组成的列表,找出一些不在现有表中的字符串,而无需使用循环。
答案 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 UPDATE
比INSERT IGNORE
安全得多,因为后者将忽略所有错误,而前者将仅忽略重复的插入内容。
希望这会有所帮助!