在Java中,你可以使用MySQL的`INSERT INTO ... ON DUPLICATE KEY UPDATE`语句来实现高效新增同时更新重复数据的操作。这个语句可以在插入新记录时,如果有唯一键冲突,则执行更新操作。
下面是一个示例代码片段,展示如何在Java中使用JDBC执行这个语句:
```java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class Main {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/database_name";
String username = "your_username";
String password = "your_password";
try (Connection conn = DriverManager.getConnection(url, username, password)) {
String sql = "INSERT INTO table_name (column1, column2, column3) " +
"VALUES (?, ?, ?) " +
"ON DUPLICATE KEY UPDATE column1 = ?, column2 = ?";
PreparedStatement pstmt = conn.prepareStatement(sql);
// 设置插入新记录的值
pstmt.setString(1, "value1");
pstmt.setString(2, "value2");
pstmt.setString(3, "value3");
// 设置更新已存在记录的值
pstmt.setString(4, "updated_value1");
pstmt.setString(5, "updated_value2");
// 执行语句
pstmt.executeUpdate();
System.out.println("数据插入或更新成功!");
} catch (SQLException e) {
e.printStackTrace();
}
}
}
```
请注意,上述示例中的`database_name`、`table_name`、`column1`、`column2`、`column3`以及`your_username`、`your_password`等需要根据你的实际情况进行替换。
使用这种方法,在插入新记录时,如果存在唯一键冲突,数据库会自动执行更新操作,从而避免了额外的查询和判断逻辑,提高了效率。同时,这也减少了与数据库的交互次数,优化了整体性能。
希望这可以帮助到你!