在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`等需要根据你的实际情况进行替换。


使用这种方法,在插入新记录时,如果存在唯一键冲突,数据库会自动执行更新操作,从而避免了额外的查询和判断逻辑,提高了效率。同时,这也减少了与数据库的交互次数,优化了整体性能。


希望这可以帮助到你!