版权声明:本文为博主原创文章,出处为 http://blog.csdn.net/silentwolfyh https://blog.csdn.net/silentwolfyh/article/details/83056420
需求:MYSQL主键存在则更新,不存在则插入
package com.utils;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
/***
* 需求:MYSQL主键存在则更新,不存在则插入
*
* 解决:
* 1、主键为:PRIMARY KEY (dbName, tableName, TIMES) ,
* 2、MYSQL主键存在则更新,不存在则插入的解决方案(ON DUPLICATE KEY UPDATE)
*/
public class MysqlTest {
public static void main(String[] args) {
try {
//mysql的配置
Connection connection = null;
PreparedStatement preparedStatement;
String username = "root";
String password = "123456";
String drivername = "com.mysql.jdbc.Driver";
String dburl = "jdbc:mysql://localhost:3306/realtimedatawarehouse";
//加载驱动
Class.forName(drivername);
connection = DriverManager.getConnection(dburl, username, password);
//MONEY相加
// String sql = "insert into ResultData(dbName,tableName,TIMES,MONEY) values(?,?,?,?) on DUPLICATE key update MONEY=MONEY+values(MONEY)";
//MONEY最大值,GREATEST的意思是N个参数分别返回最大和最小值
// String sql = "insert into ResultData(dbName,tableName,TIMES,MONEY) values(?,?,?,?) on DUPLICATE key update MONEY= GREATEST(MONEY,VALUES(MONEY));";
//MONEY最小值,LEAST的意思是N个参数分别返回最小值
String sql = "insert into ResultData(dbName,tableName,TIMES,MONEY) values(?,?,?,?) on DUPLICATE key update MONEY= LEAST(MONEY,VALUES(MONEY));";
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, "db");
preparedStatement.setString(2, "table");
preparedStatement.setString(3, "2018-09-05 13:32");
preparedStatement.setDouble(4, 2000);
preparedStatement.executeUpdate();
if (preparedStatement != null) {
preparedStatement.close();
}
if (connection != null) {
connection.close();
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.0.5</version>
</dependency>