From 5e68e0dd94eaa4db946d2b4916bbcfdbce90d5c3 Mon Sep 17 00:00:00 2001 From: rouchen <3133657697@qq.com> Date: Tue, 14 May 2024 22:41:26 +0800 Subject: [PATCH] =?UTF-8?q?feat=20=E8=BF=9E=E6=8E=A5=E6=B1=A0=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E4=B8=BA=E5=BE=B7=E7=BD=97=E4=BC=8A=E8=BF=9E=E6=8E=A5?= =?UTF-8?q?=E6=B1=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/source/DataSourceConfig.java | 75 +++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 muyu-modules/muyu-dataSource/muyu-dataSource-client/src/main/java/com/muyu/source/client/source/DataSourceConfig.java diff --git a/muyu-modules/muyu-dataSource/muyu-dataSource-client/src/main/java/com/muyu/source/client/source/DataSourceConfig.java b/muyu-modules/muyu-dataSource/muyu-dataSource-client/src/main/java/com/muyu/source/client/source/DataSourceConfig.java new file mode 100644 index 0000000..f644cad --- /dev/null +++ b/muyu-modules/muyu-dataSource/muyu-dataSource-client/src/main/java/com/muyu/source/client/source/DataSourceConfig.java @@ -0,0 +1,75 @@ +package com.muyu.source.client.source; + +import com.alibaba.druid.pool.DruidDataSource; +import com.alibaba.druid.pool.DruidPooledConnection; +import com.muyu.source.domain.Kvt; +import lombok.extern.log4j.Log4j2; +import org.springframework.stereotype.Component; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.HashMap; + +/** + * 数据源配置连接池 DataSourceConfig + * + * @author Yangle + * Date 2024/5/14 21:59 + */ +@Log4j2 +@Component +public class DataSourceConfig { + private static HashMap hashMap=new HashMap<>(); + + //创建初始化连接池 + public static void init(Kvt kvt){ + // 创建连接池 + DruidDataSource dataSource = new DruidDataSource(); + // 设置连接池属性 + dataSource.setUrl("jdbc:mysql://"+kvt.getHost()+":"+kvt.getPort()+"/"+kvt.getDatabaseName()+"?"+kvt.getConnectionParam()); + // 设置连接池用户名 + dataSource.setUsername(kvt.getUsername()); + // 设置连接池密码 + dataSource.setPassword(kvt.getPassword()); + // 设置连接池初始化连接数量 + dataSource.setInitialSize(Math.toIntExact(kvt.getInitNum())); + // 设置连接池最大连接数量 + dataSource.setMaxActive(Math.toIntExact(kvt.getMaxNum())); + // 设置连接池最大等待时间 + dataSource.setMaxWait(kvt.getMaxWaitTime()); + // 设置连接池最小连接数量 + dataSource.setMinIdle(Math.toIntExact(kvt.getInitNum())); + //设置连接池的驱动 + dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver"); + try{ + // 初始化连接池 + dataSource.init(); + }catch (SQLException e){ + throw new RuntimeException("初始化失败",e); + } + hashMap.put(kvt.getId(),dataSource); + } + + + //获取连接 + public static Connection getConnection(Long key){ + DruidDataSource dataSource = hashMap.get(key); + try { + DruidPooledConnection connection = dataSource.getConnection(); + return connection; + } catch (SQLException e) { + throw new RuntimeException("获取连接失败",e); + } + } + + //归还连接 + public static void close(Connection connection){ + if (connection!=null){ + try { + connection.close(); + } catch (SQLException e) { + throw new RuntimeException("归还连接失败",e); + } + } + } +}