From 9a934c588d0015cded7672ed643654748975bf05 Mon Sep 17 00:00:00 2001 From: wenfei Date: Thu, 12 Jun 2025 17:44:03 +0800 Subject: [PATCH] all db add --- pom.xml | 21 ++++- .../service/KingbaseTemperatureService.java | 8 ++ .../PostgresSqlTemperatureService.java | 8 ++ .../impl/KingbaseTemperatureServiceImpl.java | 82 +++++++++++++++++++ .../impl/OracleTemperatureServiceImpl.java | 11 +-- .../PostgresSqlTemperatureServiceImpl.java | 81 ++++++++++++++++++ .../impl/SqlServerTemperatureServiceImpl.java | 2 +- .../service/impl/TemperatureServiceImpl.java | 16 +++- src/main/resources/application.yml | 13 ++- 9 files changed, 225 insertions(+), 17 deletions(-) create mode 100644 src/main/java/com/rehome/mqttclienttemperature/service/KingbaseTemperatureService.java create mode 100644 src/main/java/com/rehome/mqttclienttemperature/service/PostgresSqlTemperatureService.java create mode 100644 src/main/java/com/rehome/mqttclienttemperature/service/impl/KingbaseTemperatureServiceImpl.java create mode 100644 src/main/java/com/rehome/mqttclienttemperature/service/impl/PostgresSqlTemperatureServiceImpl.java diff --git a/pom.xml b/pom.xml index 1e40ac8..434d39a 100644 --- a/pom.xml +++ b/pom.xml @@ -31,10 +31,15 @@ mybatis-spring-boot-starter 2.1.4 + + + + + mysql mysql-connector-java - 8.0.33 + runtime com.alibaba @@ -110,12 +115,26 @@ mssql-jdbc 11.2.0.jre8 + + + com.kingbase8 + kingbase8 + 8.6.0 + + commons-codec commons-codec 1.11 compile + + + org.postgresql + postgresql + runtime + + cn.hutool hutool-all diff --git a/src/main/java/com/rehome/mqttclienttemperature/service/KingbaseTemperatureService.java b/src/main/java/com/rehome/mqttclienttemperature/service/KingbaseTemperatureService.java new file mode 100644 index 0000000..28c1df5 --- /dev/null +++ b/src/main/java/com/rehome/mqttclienttemperature/service/KingbaseTemperatureService.java @@ -0,0 +1,8 @@ +package com.rehome.mqttclienttemperature.service; + +import com.rehome.mqttclienttemperature.dto.ResponseDto; +import com.rehome.mqttclienttemperature.entity.Temperature; + +public interface KingbaseTemperatureService { + ResponseDto saveTemperature(Temperature temperature); +} diff --git a/src/main/java/com/rehome/mqttclienttemperature/service/PostgresSqlTemperatureService.java b/src/main/java/com/rehome/mqttclienttemperature/service/PostgresSqlTemperatureService.java new file mode 100644 index 0000000..3ba85d2 --- /dev/null +++ b/src/main/java/com/rehome/mqttclienttemperature/service/PostgresSqlTemperatureService.java @@ -0,0 +1,8 @@ +package com.rehome.mqttclienttemperature.service; + +import com.rehome.mqttclienttemperature.dto.ResponseDto; +import com.rehome.mqttclienttemperature.entity.Temperature; + +public interface PostgresSqlTemperatureService { + ResponseDto saveTemperature(Temperature temperature); +} diff --git a/src/main/java/com/rehome/mqttclienttemperature/service/impl/KingbaseTemperatureServiceImpl.java b/src/main/java/com/rehome/mqttclienttemperature/service/impl/KingbaseTemperatureServiceImpl.java new file mode 100644 index 0000000..ac1564b --- /dev/null +++ b/src/main/java/com/rehome/mqttclienttemperature/service/impl/KingbaseTemperatureServiceImpl.java @@ -0,0 +1,82 @@ +package com.rehome.mqttclienttemperature.service.impl; + + +import com.google.gson.Gson; +import com.rehome.mqttclienttemperature.datasource.DataSource; +import com.rehome.mqttclienttemperature.dto.ResponseDto; +import com.rehome.mqttclienttemperature.entity.Temperature; +import com.rehome.mqttclienttemperature.service.KingbaseTemperatureService; +import com.rehome.mqttclienttemperature.service.OracleTemperatureService; +import com.rehome.mqttclienttemperature.service.PostgresSqlTemperatureService; +import com.rehome.mqttclienttemperature.service.SqlServerTemperatureService; +import com.rehome.mqttclienttemperature.utils.JdbcUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +@Slf4j +@Service +public class KingbaseTemperatureServiceImpl implements KingbaseTemperatureService { + public static DataSource ds = new DataSource(); + static { + //配置数据源 + ds.setId("202"); + ds.setName("kingBase_3_25"); + ds.setUrl("jdbc:kingbase8://192.168.3.25:54321/appserver?useUnicode=true"); + ds.setUsername("system"); + ds.setPassword("452131wW"); + ds.setDriver("com.kingbase8.Driver"); + } + + @Override + public ResponseDto saveTemperature(Temperature temperature) { + // 自定义一个线程池,内部包含8个线程 + ExecutorService customPool = Executors.newFixedThreadPool(2); + CompletableFuture future = CompletableFuture.supplyAsync(() -> { + //SYSTIMESTAMP + //CURRENT_TIMESTAMP + //HIBERNATE_SEQUENCE + //temperature_seq_appserver + //pg + //String sql = "insert into temperature(temperature, humidity, data_date, data_hour, data_minute, topic, location_desc, create_date) values(?, ?, ?, ?, ?, ?, ?, CURRENT_TIMESTAMP)"; + //sqlserver 和 pg 相同 + String sql = "insert into temperature(temperature, humidity, data_date, data_hour, data_minute, topic, location_desc, create_date) values(?, ?, ?, ?, ?, ?, ?, CURRENT_TIMESTAMP)"; + List jdbcParamValues = new ArrayList<>(); + + jdbcParamValues.add(temperature.getTemperature()); + jdbcParamValues.add(temperature.getHumidity()); + jdbcParamValues.add(temperature.getDataDate()); + jdbcParamValues.add(temperature.getDataHour()); + jdbcParamValues.add(temperature.getDataMinute()); + jdbcParamValues.add(temperature.getTopic()); + jdbcParamValues.add(temperature.getLocationDesc()); + //jdbcParamValues.add(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(temperature.getCreateDate())); + + Gson gson = new Gson(); + ResponseDto responseDto = JdbcUtil.executeSql(ds, sql, jdbcParamValues); + String dbQueryResult = gson.toJson(responseDto); + log.info(dbQueryResult); + jdbcParamValues.clear(); + + if(responseDto.isSuccess()){ + return "数据库同步成功"; + } + return "数据库同步失败"; + }, customPool); + + ResponseDto responseDto = future.thenApply(result -> { + log.info("Result: " + result); + if("数据库同步成功".equals(result)){ + return ResponseDto.successWithMsg(result); + } + return ResponseDto.fail(result); + }).join(); + return responseDto; + } +} diff --git a/src/main/java/com/rehome/mqttclienttemperature/service/impl/OracleTemperatureServiceImpl.java b/src/main/java/com/rehome/mqttclienttemperature/service/impl/OracleTemperatureServiceImpl.java index 8038b91..ce9e7a0 100644 --- a/src/main/java/com/rehome/mqttclienttemperature/service/impl/OracleTemperatureServiceImpl.java +++ b/src/main/java/com/rehome/mqttclienttemperature/service/impl/OracleTemperatureServiceImpl.java @@ -24,12 +24,9 @@ public class OracleTemperatureServiceImpl implements OracleTemperatureService { //配置数据源 ds.setId("200"); ds.setName("oracle"); -// ds.setUrl("jdbc:oracle:thin:@192.168.3.9:1521/orcl"); -// ds.setUsername("appserver"); -// ds.setPassword("appserver"); - ds.setUrl("jdbc:oracle:thin:@43.139.89.198:15210/orcl"); - ds.setUsername("huangwenfei"); - ds.setPassword("huangwenfei"); + ds.setUrl("jdbc:oracle:thin:@192.168.3.9:1521/orcl"); + ds.setUsername("appserver"); + ds.setPassword("appserver"); ds.setDriver("oracle.jdbc.driver.OracleDriver"); } @@ -42,7 +39,7 @@ public class OracleTemperatureServiceImpl implements OracleTemperatureService { //CURRENT_TIMESTAMP //HIBERNATE_SEQUENCE //temperature_seq_appserver - String sql = "insert into temperature(id,temperature, humidity, data_date, data_hour, data_minute, topic, location_desc, create_date) values(HIBERNATE_SEQUENCE.NEXTVAL, ?, ?, ?, ?, ?, ?, ?, SYSTIMESTAMP)"; + String sql = "insert into temperature(id,temperature, humidity, data_date, data_hour, data_minute, topic, location_desc, create_date) values(temperature_seq_appserver.NEXTVAL, ?, ?, ?, ?, ?, ?, ?, SYSTIMESTAMP)"; List jdbcParamValues = new ArrayList<>(); jdbcParamValues.add(temperature.getTemperature()); diff --git a/src/main/java/com/rehome/mqttclienttemperature/service/impl/PostgresSqlTemperatureServiceImpl.java b/src/main/java/com/rehome/mqttclienttemperature/service/impl/PostgresSqlTemperatureServiceImpl.java new file mode 100644 index 0000000..efc5a72 --- /dev/null +++ b/src/main/java/com/rehome/mqttclienttemperature/service/impl/PostgresSqlTemperatureServiceImpl.java @@ -0,0 +1,81 @@ +package com.rehome.mqttclienttemperature.service.impl; + + +import com.google.gson.Gson; +import com.rehome.mqttclienttemperature.datasource.DataSource; +import com.rehome.mqttclienttemperature.dto.ResponseDto; +import com.rehome.mqttclienttemperature.entity.Temperature; +import com.rehome.mqttclienttemperature.service.OracleTemperatureService; +import com.rehome.mqttclienttemperature.service.PostgresSqlTemperatureService; +import com.rehome.mqttclienttemperature.service.SqlServerTemperatureService; +import com.rehome.mqttclienttemperature.utils.JdbcUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +@Slf4j +@Service +public class PostgresSqlTemperatureServiceImpl implements PostgresSqlTemperatureService { + public static DataSource ds = new DataSource(); + static { + //配置数据源 + ds.setId("203"); + ds.setName("postgres"); + ds.setUrl("jdbc:postgresql://192.168.3.24:5432/postgres"); + ds.setUsername("postgres"); + ds.setPassword("452131wW"); + ds.setDriver("org.postgresql.Driver"); + } + + @Override + public ResponseDto saveTemperature(Temperature temperature) { + // 自定义一个线程池,内部包含8个线程 + ExecutorService customPool = Executors.newFixedThreadPool(2); + CompletableFuture future = CompletableFuture.supplyAsync(() -> { + //SYSTIMESTAMP + //CURRENT_TIMESTAMP + //HIBERNATE_SEQUENCE + //temperature_seq_appserver + //pg + //String sql = "insert into temperature(temperature, humidity, data_date, data_hour, data_minute, topic, location_desc, create_date) values(?, ?, ?, ?, ?, ?, ?, CURRENT_TIMESTAMP)"; + //sqlserver 和 pg 相同 + String sql = "insert into temperature(temperature, humidity, data_date, data_hour, data_minute, topic, location_desc, create_date) values(?, ?, ?, ?, ?, ?, ?, CURRENT_TIMESTAMP)"; + List jdbcParamValues = new ArrayList<>(); + + jdbcParamValues.add(temperature.getTemperature()); + jdbcParamValues.add(temperature.getHumidity()); + jdbcParamValues.add(temperature.getDataDate()); + jdbcParamValues.add(temperature.getDataHour()); + jdbcParamValues.add(temperature.getDataMinute()); + jdbcParamValues.add(temperature.getTopic()); + jdbcParamValues.add(temperature.getLocationDesc()); + //jdbcParamValues.add(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(temperature.getCreateDate())); + + Gson gson = new Gson(); + ResponseDto responseDto = JdbcUtil.executeSql(ds, sql, jdbcParamValues); + String dbQueryResult = gson.toJson(responseDto); + log.info(dbQueryResult); + jdbcParamValues.clear(); + + if(responseDto.isSuccess()){ + return "数据库同步成功"; + } + return "数据库同步失败"; + }, customPool); + + ResponseDto responseDto = future.thenApply(result -> { + log.info("Result: " + result); + if("数据库同步成功".equals(result)){ + return ResponseDto.successWithMsg(result); + } + return ResponseDto.fail(result); + }).join(); + return responseDto; + } +} \ No newline at end of file diff --git a/src/main/java/com/rehome/mqttclienttemperature/service/impl/SqlServerTemperatureServiceImpl.java b/src/main/java/com/rehome/mqttclienttemperature/service/impl/SqlServerTemperatureServiceImpl.java index b7871b1..a110fff 100644 --- a/src/main/java/com/rehome/mqttclienttemperature/service/impl/SqlServerTemperatureServiceImpl.java +++ b/src/main/java/com/rehome/mqttclienttemperature/service/impl/SqlServerTemperatureServiceImpl.java @@ -26,7 +26,7 @@ public class SqlServerTemperatureServiceImpl implements SqlServerTemperatureServ //配置数据源 ds.setId("201"); ds.setName("sqlserver"); - ds.setUrl("jdbc:sqlserver://43.139.89.198:14330;DatabaseName=appserver;encrypt=false;"); + ds.setUrl("jdbc:sqlserver://192.168.3.29:1433;DatabaseName=appserver;encrypt=false;"); ds.setUsername("sa"); ds.setPassword("452131wW"); ds.setDriver("com.microsoft.sqlserver.jdbc.SQLServerDriver"); diff --git a/src/main/java/com/rehome/mqttclienttemperature/service/impl/TemperatureServiceImpl.java b/src/main/java/com/rehome/mqttclienttemperature/service/impl/TemperatureServiceImpl.java index 37243c8..7d71cdc 100644 --- a/src/main/java/com/rehome/mqttclienttemperature/service/impl/TemperatureServiceImpl.java +++ b/src/main/java/com/rehome/mqttclienttemperature/service/impl/TemperatureServiceImpl.java @@ -4,9 +4,7 @@ import com.google.gson.Gson; import com.rehome.mqttclienttemperature.dao.TemperatureRepository; import com.rehome.mqttclienttemperature.dto.ResponseDto; import com.rehome.mqttclienttemperature.entity.Temperature; -import com.rehome.mqttclienttemperature.service.OracleTemperatureService; -import com.rehome.mqttclienttemperature.service.SqlServerTemperatureService; -import com.rehome.mqttclienttemperature.service.TemperatureService; +import com.rehome.mqttclienttemperature.service.*; import lombok.extern.slf4j.Slf4j; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; @@ -31,6 +29,10 @@ public class TemperatureServiceImpl implements TemperatureService { private OracleTemperatureService oracleTemperatureService; @Resource private SqlServerTemperatureService sqlServerTemperatureService; + @Resource + private KingbaseTemperatureService kingbaseTemperatureService; + @Resource + private PostgresSqlTemperatureService postgresSqlTemperatureService; @Override @@ -67,13 +69,19 @@ public class TemperatureServiceImpl implements TemperatureService { temperature.setHumidity(strDataTemperature[0]); temperature.setTemperature(strDataTemperature[1]); - //this.temperatureRepository.save(temperature); + this.temperatureRepository.save(temperature); ResponseDto responseDtoOracle = this.oracleTemperatureService.saveTemperature(temperature); log.info(new Gson().toJson(responseDtoOracle)); ResponseDto responseDtoSqlserver = this.sqlServerTemperatureService.saveTemperature(temperature); log.info(new Gson().toJson(responseDtoSqlserver)); + ResponseDto responseDtoKingBase = this.kingbaseTemperatureService.saveTemperature(temperature); + log.info(new Gson().toJson(responseDtoKingBase)); + + ResponseDto responseDtoSPg = this.postgresSqlTemperatureService.saveTemperature(temperature); + log.info(new Gson().toJson(responseDtoSPg)); + } } diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index f7a9dfd..12da741 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -24,8 +24,8 @@ spring: #url: jdbc:mysql://192.168.3.24:3306/appserver?useUnicode=true&characterEncoding=utf-8&useSSL=false&autoReconnect=true #url: jdbc:mysql://192.168.1.24:3306/appserver?useUnicode=true&characterEncoding=utf-8&useSSL=false&autoReconnect=true #url: jdbc:mysql://47.242.184.139:3306/appserver?useUnicode=true&characterEncoding=utf-8&useSSL=false&autoReconnect=true - #url: jdbc:mysql://192.168.3.9:3306/appserver?useUnicode=true&characterEncoding=utf-8&useSSL=false&autoReconnect=true - url: jdbc:mysql://127.0.0.1:3306/appserver?useUnicode=true&characterEncoding=utf-8&useSSL=false&autoReconnect=true + url: jdbc:mysql://192.168.3.9:3306/appserver?useUnicode=true&characterEncoding=utf-8&useSSL=false&autoReconnect=true + #url: jdbc:mysql://127.0.0.1:3306/appserver?useUnicode=true&characterEncoding=utf-8&useSSL=false&autoReconnect=true driverClassName: com.mysql.cj.jdbc.Driver #com.mysql.cj.jdbc.Driver com.mysql.jdbc.Driver username: root password: Skyinno251, @@ -37,8 +37,13 @@ spring: database: mysql # 配置 DBMS 类型 show-sql: true # 配置是否将执行的 SQL 输出到日志 open-in-view: true - hibernate: - ddl-auto: update # 第一次建表create 后面用update,要不然每次重启都会新建表 + properties: + hibernate: + format_sql: true + dialect: org.hibernate.dialect.MySQL57Dialect + ddl-auto: update + hbm2ddl: + auto: update servlet: multipart: # 开启 multipart 上传功能