From 0b1e9e70818f0e3eb32dd6c029d42d93236ecdc6 Mon Sep 17 00:00:00 2001
From: zrj <646384940@qq.com>
Date: Wed, 03 Jul 2024 12:07:01 +0800
Subject: [PATCH] 数据同步新增连接池配置

---
 src/main/java/org/springblade/binlog/constant/FromConstants.java      |  110 +++++++++++++++++++++++++++
 src/main/java/org/springblade/binlog/listener/TourBinLogListener.java |    2 
 src/main/java/org/springblade/binlog/client/MysqlClient.java          |   83 ++++++++------------
 src/main/resources/application-dev.yml                                |    6 -
 src/main/resources/application-prod.yml                               |    6 -
 src/main/resources/application-test.yml                               |    6 -
 src/main/java/org/springblade/binlog/constant/BinLogConstants.java    |    9 --
 7 files changed, 147 insertions(+), 75 deletions(-)

diff --git a/src/main/java/org/springblade/binlog/client/MysqlClient.java b/src/main/java/org/springblade/binlog/client/MysqlClient.java
index 8d8f720..88fff9f 100644
--- a/src/main/java/org/springblade/binlog/client/MysqlClient.java
+++ b/src/main/java/org/springblade/binlog/client/MysqlClient.java
@@ -1,15 +1,13 @@
 package org.springblade.binlog.client;
 
+import com.zaxxer.hikari.HikariConfig;
+import com.zaxxer.hikari.HikariDataSource;
 import lombok.extern.slf4j.Slf4j;
-import org.springblade.binlog.constant.BinLogConstants;
+import org.springblade.binlog.constant.FromConstants;
 import org.springframework.stereotype.Component;
 
-import javax.annotation.PostConstruct;
-import javax.annotation.Resource;
-import java.sql.Connection;
-import java.sql.DriverManager;
-import java.sql.PreparedStatement;
-import java.sql.SQLException;
+import java.sql.*;
+import java.util.Properties;
 
 /**
  * mysql 客户端连接
@@ -18,20 +16,26 @@
 @Component
 public class MysqlClient {
 
-	//声明对象
-	private static MysqlClient mysqlClient;
+	private static String url = "jdbc:mysql://127.0.0.1:3308/srjw?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true";
+	private static String username = "root";
+	private static String password = "root";
 
+	private static final HikariDataSource ds = createDataSource();
 
-	@Resource
-	private BinLogConstants binLogConstants;
+	public static HikariDataSource createDataSource() {
+		Properties properties = System.getProperties();
+//		String profile = properties.getProperty("blade.env");
+		String profile = properties.getProperty("spring.profiles.active");
+		HikariConfig config = new HikariConfig();
+		config.setJdbcUrl(FromConstants.setUrl(profile));
+		config.setUsername(FromConstants.setUsername(profile));
+		config.setPassword(FromConstants.setPassword(profile));
+		config.addDataSourceProperty("cachePrepStmts", "true");
+		config.addDataSourceProperty("prepStmtCacheSize", "250");
+		config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048");
 
-	/**
-	 * 初始化
-	 */
-	@PostConstruct
-	public void init(){
-		mysqlClient = this;
-		mysqlClient.binLogConstants = this.binLogConstants;
+		HikariDataSource ds = new HikariDataSource(config);
+		return ds;
 	}
 
 	/**
@@ -39,39 +43,22 @@
 	 * @param sql
 	 */
 	public static void sqlConnect(String sql,Integer type){
-		String driver = "com.mysql.cj.jdbc.Driver";
-		String url = mysqlClient.binLogConstants.getFromUrl();
-		String user = mysqlClient.binLogConstants.getFromUsername();
-		String password = mysqlClient.binLogConstants.getFromPassword();
-		Connection conn = null;
-		PreparedStatement ps = null;
+		Connection connection = null;
+		PreparedStatement preparedStatement = null;
+		ResultSet resultSet = null;
 		try {
-			Class.forName ( driver );
-			conn = (Connection) DriverManager.getConnection ( url, user, password );
-			if (!conn.isClosed ()) {
-				log.info( "数据库连接成功!" );
-				ps = conn.prepareStatement ( sql );
-				//判断是否为修改,删除
-				if (type==1){
-					//修改删除
-					ps.executeUpdate();
-					log.info( "数据已发送成功!" );
-				}else {
-					//新增
-					ps.execute();
-					log.info( "数据已发送成功!" );
-				}
-			}
-		} catch (ClassNotFoundException e) {
-			e.printStackTrace();
+			connection = ds.getConnection();
+			preparedStatement = connection.prepareStatement(sql);
+			preparedStatement.executeUpdate();
 		} catch (SQLException e) {
-			e.printStackTrace ();
-		}finally {
+			e.printStackTrace();
+		} finally {
 			try {
-				ps.close();
-				conn.close();
-			} catch (SQLException throwables) {
-				throwables.printStackTrace();
+				if (resultSet != null) resultSet.close();
+				if (preparedStatement != null) preparedStatement.close();
+				if (connection != null) connection.close();
+			} catch (SQLException e) {
+				e.printStackTrace();
 			}
 		}
 	}
diff --git a/src/main/java/org/springblade/binlog/constant/BinLogConstants.java b/src/main/java/org/springblade/binlog/constant/BinLogConstants.java
index 446c3fd..bfcda24 100644
--- a/src/main/java/org/springblade/binlog/constant/BinLogConstants.java
+++ b/src/main/java/org/springblade/binlog/constant/BinLogConstants.java
@@ -31,15 +31,6 @@
 	@Value("${binlog.table}")
 	private String table;
 
-	@Value("${binlog.from.datasource.url}")
-	private String fromUrl;
-
-	@Value("${binlog.from.datasource.username}")
-	private String fromUsername;
-
-	@Value("${binlog.from.datasource.password}")
-	private String fromPassword;
-
 	public static final int consumerThreads = 5;
 
 //	public static final long queueSleep = 1000;
diff --git a/src/main/java/org/springblade/binlog/constant/FromConstants.java b/src/main/java/org/springblade/binlog/constant/FromConstants.java
new file mode 100644
index 0000000..f81f190
--- /dev/null
+++ b/src/main/java/org/springblade/binlog/constant/FromConstants.java
@@ -0,0 +1,110 @@
+package org.springblade.binlog.constant;
+
+import org.springblade.core.launch.constant.AppConstant;
+
+/**
+ * 监听配置信息
+ *
+ * @author zrj
+ * @since 2024/07/03
+ **/
+public interface FromConstants {
+	/**
+	 * URL dev 地址
+	 */
+	String URL_DEV_ADDR = "jdbc:mysql://127.0.0.1:3308/srjw?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true";
+
+	/**
+	 * URL prod 地址
+	 */
+	String URL_PROD_ADDR = "jdbc:mysql://czfw_wx_web.xzga.top:13005/ewm_shangrao?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true";
+
+	/**
+	 * URL test 地址
+	 */
+	String URL_TEST_ADDR = "jdbc:mysql://127.0.0.1:3308/srjw?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true";
+
+	/**
+	 * username dev 地址
+	 */
+	String USERNAME_DEV_ADDR = "root";
+
+	/**
+	 * username prod 地址
+	 */
+	String USERNAME_PROD_ADDR = "ewm_user";
+
+	/**
+	 * username test 地址
+	 */
+	String USERNAME_TEST_ADDR = "root";
+
+	/**
+	 * password dev 地址
+	 */
+	String PASSWORD_DEV_ADDR = "root";
+
+	/**
+	 * username prod 地址
+	 */
+	String PASSWORD_PROD_ADDR = "ft@135246";
+
+	/**
+	 * username test 地址
+	 */
+	String PASSWORD_TEST_ADDR = "root";
+
+	/**
+	 * 动态获取url
+	 *
+	 * @param profile 环境变量
+	 * @return
+	 */
+	static String setUrl(String profile) {
+		switch (profile) {
+			case (AppConstant.PROD_CODE):
+				return URL_PROD_ADDR;
+			case (AppConstant.TEST_CODE):
+				return URL_TEST_ADDR;
+			default:
+				return URL_DEV_ADDR;
+		}
+	}
+
+	/**
+	 * 动态获取 USERNAME
+	 *
+	 * @param profile 环境变量
+	 * @return
+	 */
+	static String setUsername(String profile) {
+		switch (profile) {
+			case (AppConstant.PROD_CODE):
+				return USERNAME_PROD_ADDR;
+			case (AppConstant.TEST_CODE):
+				return USERNAME_TEST_ADDR;
+			default:
+				return USERNAME_DEV_ADDR;
+		}
+	}
+
+	/**
+	 * 动态获取 password
+	 *
+	 * @param profile 环境变量
+	 * @return
+	 */
+	static String setPassword(String profile) {
+		switch (profile) {
+			case (AppConstant.PROD_CODE):
+				return PASSWORD_PROD_ADDR;
+			case (AppConstant.TEST_CODE):
+				return PASSWORD_TEST_ADDR;
+			default:
+				return PASSWORD_DEV_ADDR;
+		}
+	}
+
+}
+
+
diff --git a/src/main/java/org/springblade/binlog/listener/TourBinLogListener.java b/src/main/java/org/springblade/binlog/listener/TourBinLogListener.java
index e854e73..bc67b44 100644
--- a/src/main/java/org/springblade/binlog/listener/TourBinLogListener.java
+++ b/src/main/java/org/springblade/binlog/listener/TourBinLogListener.java
@@ -1,6 +1,8 @@
 package org.springblade.binlog.listener;
 
 import cn.hutool.core.collection.CollectionUtil;
+import com.zaxxer.hikari.HikariConfig;
+import com.zaxxer.hikari.HikariDataSource;
 import lombok.extern.slf4j.Slf4j;
 import org.springblade.binlog.client.MysqlClient;
 import org.springblade.binlog.config.DataSourceConfig;
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index aff44eb..50f8ad8 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -51,9 +51,3 @@
   table: jczz_house,jczz_household,jczz_house_rental,jczz_user_house_label,jczz_label,jczz_place,jczz_place_check,jczz_place_door,jczz_place_ext,jczz_place_poi_label,jczz_place_practitioner,jczz_police_affairs_grid,jczz_task_label_reporting_event,jczz_patrol_group,jczz_patrol_group_item,jczz_patrol_record,blade_attach_data,jczz_category,jczz_grid,jczz_backblast_pub_record,jczz_backblast_warn_han_rec,jczz_dispute_record,jczz_police_alarm_records,jczz_task_residence_permit_apply,jczz_backblast_pub_person,jczz_polic_trajectory_point
   #  table: blade_attach_data
   enabled: true
-  # 目标数据库
-  from:
-    datasource:
-      url: jdbc:mysql://106.225.193.35:3306/srjw?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true
-      username: root
-      password: HCyj@2022
diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml
index eaa8f8f..5aa9fb7 100644
--- a/src/main/resources/application-prod.yml
+++ b/src/main/resources/application-prod.yml
@@ -50,9 +50,3 @@
   table: jczz_house,jczz_household,jczz_house_rental,jczz_user_house_label,jczz_label,jczz_place,jczz_place_check,jczz_place_door,jczz_place_ext,jczz_place_poi_label,jczz_place_practitioner,jczz_task_label_reporting_event,jczz_patrol_group,jczz_patrol_group_item,jczz_patrol_record,blade_attach_data,jczz_category,jczz_grid,jczz_backblast_pub_record,jczz_backblast_warn_han_rec,jczz_dispute_record,jczz_police_alarm_records,jczz_task_residence_permit_apply,jczz_backblast_pub_person,jczz_polic_trajectory_point
 #  table: blade_attach_data
   enabled: true
-  # 目标数据库
-  from:
-    datasource:
-      url: jdbc:mysql://czfw_wx_web.xzga.top:13005/ewm_shangrao?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true
-      username: ewm_user
-      password: ft@135246
diff --git a/src/main/resources/application-test.yml b/src/main/resources/application-test.yml
index 100430f..5f607d1 100644
--- a/src/main/resources/application-test.yml
+++ b/src/main/resources/application-test.yml
@@ -51,9 +51,3 @@
   table: jczz_house,jczz_household,jczz_house_rental,jczz_user_house_label,jczz_label,jczz_place,jczz_place_check,jczz_place_door,jczz_place_ext,jczz_place_poi_label,jczz_place_practitioner,jczz_police_affairs_grid,jczz_task_label_reporting_event,jczz_patrol_group,jczz_patrol_group_item,jczz_patrol_record,blade_attach_data,jczz_category,jczz_grid,jczz_backblast_pub_record,jczz_backblast_warn_han_rec,jczz_dispute_record,jczz_police_alarm_records,jczz_task_residence_permit_apply,jczz_backblast_pub_person,jczz_polic_trajectory_point
   #  table: blade_attach_data
   enabled: true
-  # 目标数据库
-  from:
-    datasource:
-      url: jdbc:mysql://106.225.193.35:3306/srjw?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true
-      username: root
-      password: HCyj@2022

--
Gitblit v1.9.3