From 423cc032c053d6d153f579a803500a471d89910e Mon Sep 17 00:00:00 2001
From: liusuyi <13324259@qq.com>
Date: Sun, 17 Sep 2023 23:41:55 +0800
Subject: [PATCH] 增加多数据源

---
 src/main/java/com/ard/alarm/camera/mapper/ArdCamerasMapper.java                   |    2 
 src/main/java/com/ard/config/DruidConfig.java                                     |   14 +-
 src/main/java/com/ard/alarm/apponekey/controller/ArdAlarmApponekeyController.java |    1 
 src/main/java/com/ard/alarm/stealelec/service/StealElecAlarmService.java          |    2 
 src/main/java/com/ard/alarm/external/mapper/ArdEquipExternalMapper.java           |    2 
 src/main/resources/GeneratorMapper.xml                                            |   57 +++++++++++
 src/main/resources/application-dev.yml                                            |  113 +++++++++++++++++-----
 src/main/java/com/ard/alarm/radar/mapper/ArdEquipRadarMapper.java                 |    2 
 pom.xml                                                                           |   24 ++++
 src/main/resources/application.yml                                                |    2 
 src/main/java/com/ard/alarm/digitization/controller/DatabridgeController.java     |   30 ++++++
 11 files changed, 215 insertions(+), 34 deletions(-)

diff --git a/pom.xml b/pom.xml
index 419f554..42e4c7d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -65,6 +65,13 @@
             <artifactId>mybatis-spring-boot-starter</artifactId>
             <version>2.2.2</version>
         </dependency>
+        <!--Oracle jdbc-->
+        <!--这里注意,某些ojdbc的版本不支持jdk1.8,遇到过,网上说这个ojdbc8支持,所以这里使用它-->
+        <dependency>
+            <groupId>com.oracle.ojdbc</groupId>
+            <artifactId>ojdbc8</artifactId>
+            <version>19.3.0.0</version>
+        </dependency>
         <!--minio依赖-->
         <dependency>
             <groupId>io.minio</groupId>
@@ -86,6 +93,12 @@
             <groupId>com.alibaba</groupId>
             <artifactId>druid-spring-boot-starter</artifactId>
             <version>1.2.14</version>
+        </dependency>
+        <!-- 动态数据源 -->
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
+            <version>3.5.0</version>
         </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
@@ -124,6 +137,17 @@
                     </buildArgs>
                 </configuration>
             </plugin>
+            <plugin>
+                <groupId>org.mybatis.generator</groupId>
+                <artifactId>mybatis-generator-maven-plugin</artifactId>
+                <version>1.4.1</version>
+                <configuration>
+                    <!--配置文件位置-->
+                    <configurationFile>src/main/resources/GeneratorMapper.xml</configurationFile>
+                    <verbose>true</verbose>
+                    <overwrite>true</overwrite>
+                </configuration>
+            </plugin>
         </plugins>
     </build>
 
diff --git a/src/main/java/com/ard/alarm/apponekey/controller/ArdAlarmApponekeyController.java b/src/main/java/com/ard/alarm/apponekey/controller/ArdAlarmApponekeyController.java
index d01aafb..9ea97ee 100644
--- a/src/main/java/com/ard/alarm/apponekey/controller/ArdAlarmApponekeyController.java
+++ b/src/main/java/com/ard/alarm/apponekey/controller/ArdAlarmApponekeyController.java
@@ -20,6 +20,7 @@
 public class ArdAlarmApponekeyController {
     @Resource
     private IArdAlarmApponekeyService ardAlarmApponekeyService;
+
     /**
      * 新增app一键报警
      */
diff --git a/src/main/java/com/ard/alarm/camera/mapper/ArdCamerasMapper.java b/src/main/java/com/ard/alarm/camera/mapper/ArdCamerasMapper.java
index c75f1df..dfc62dc 100644
--- a/src/main/java/com/ard/alarm/camera/mapper/ArdCamerasMapper.java
+++ b/src/main/java/com/ard/alarm/camera/mapper/ArdCamerasMapper.java
@@ -2,6 +2,7 @@
 
 import java.util.List;
 import com.ard.alarm.camera.domain.ArdCameras;
+import com.baomidou.dynamic.datasource.annotation.DS;
 import org.apache.ibatis.annotations.Mapper;
 
 /**
@@ -11,6 +12,7 @@
  * @date 2023-02-11
  */
 @Mapper
+@DS("postgres")
 public interface ArdCamerasMapper 
 {
     /**
diff --git a/src/main/java/com/ard/alarm/digitization/controller/DatabridgeController.java b/src/main/java/com/ard/alarm/digitization/controller/DatabridgeController.java
new file mode 100644
index 0000000..24ab6da
--- /dev/null
+++ b/src/main/java/com/ard/alarm/digitization/controller/DatabridgeController.java
@@ -0,0 +1,30 @@
+package com.ard.alarm.digitization.controller;
+
+import com.ard.alarm.digitization.mapper.DatabridgeMapper;
+import com.ard.alarm.digitization.model.Databridge;
+import com.ard.utils.http.AjaxResult;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import javax.annotation.Resource;
+
+/**
+ * @ClassName DatabridgeController
+ * @Description:
+ * @Author 刘苏义
+ * @Date 2023/9/17 23:11
+ * @Version 1.0
+ */
+@RestController
+@RequestMapping("/alarm/digitization")
+public class DatabridgeController {
+
+    @Resource
+    DatabridgeMapper databridgeMapper;
+
+
+    @GetMapping("/list")
+    public AjaxResult list(Databridge databridge) {
+        return AjaxResult.success(databridgeMapper.selectDatabridgeList(databridge));
+    }
+}
diff --git a/src/main/java/com/ard/alarm/external/mapper/ArdEquipExternalMapper.java b/src/main/java/com/ard/alarm/external/mapper/ArdEquipExternalMapper.java
index e5b3a23..ddca367 100644
--- a/src/main/java/com/ard/alarm/external/mapper/ArdEquipExternalMapper.java
+++ b/src/main/java/com/ard/alarm/external/mapper/ArdEquipExternalMapper.java
@@ -2,6 +2,7 @@
 
 import java.util.List;
 import com.ard.alarm.external.domain.ArdEquipExternal;
+import com.baomidou.dynamic.datasource.annotation.DS;
 import org.apache.ibatis.annotations.Mapper;
 
 
@@ -12,6 +13,7 @@
  * @date 2023-03-13
  */
 @Mapper
+@DS("postgres")
 public interface ArdEquipExternalMapper 
 {
     /**
diff --git a/src/main/java/com/ard/alarm/radar/mapper/ArdEquipRadarMapper.java b/src/main/java/com/ard/alarm/radar/mapper/ArdEquipRadarMapper.java
index 2d5755c..86f93d9 100644
--- a/src/main/java/com/ard/alarm/radar/mapper/ArdEquipRadarMapper.java
+++ b/src/main/java/com/ard/alarm/radar/mapper/ArdEquipRadarMapper.java
@@ -2,6 +2,7 @@
 
 import java.util.List;
 import com.ard.alarm.radar.domain.ArdEquipRadar;
+import com.baomidou.dynamic.datasource.annotation.DS;
 import org.apache.ibatis.annotations.Mapper;
 
 /**
@@ -11,6 +12,7 @@
  * @date 2023-03-11
  */
 @Mapper
+@DS("postgres")
 public interface ArdEquipRadarMapper 
 {
     /**
diff --git a/src/main/java/com/ard/alarm/stealelec/service/StealElecAlarmService.java b/src/main/java/com/ard/alarm/stealelec/service/StealElecAlarmService.java
index 7208846..1cc832e 100644
--- a/src/main/java/com/ard/alarm/stealelec/service/StealElecAlarmService.java
+++ b/src/main/java/com/ard/alarm/stealelec/service/StealElecAlarmService.java
@@ -39,7 +39,7 @@
      * @修改人和其它信息
      */
     @Async("alarm")
-    @Scheduled(cron="0/5 * * * * ?")
+   // @Scheduled(cron="0/5 * * * * ?")
     public void alarmHandler() {
         try {
             String allAlarmData = restTemplate.getForObject(stealElecUrl, String.class);
diff --git a/src/main/java/com/ard/config/DruidConfig.java b/src/main/java/com/ard/config/DruidConfig.java
index d1df6c6..70619ee 100644
--- a/src/main/java/com/ard/config/DruidConfig.java
+++ b/src/main/java/com/ard/config/DruidConfig.java
@@ -15,17 +15,17 @@
  * @Date: 2023年07月04日15:29
  * @Version: 1.0
  **/
-@Configuration
+
 public class DruidConfig {
     //这个注解读取配置文件前缀为prefix的配置,将外部的配置文件与这里绑定
     @ConfigurationProperties(prefix = "spring.datasource.druid")
     //容器的开启与关闭
-    @Bean(initMethod = "init",destroyMethod = "close")
-    public DruidDataSource dataSource(){
-        DruidDataSource dataSource=new DruidDataSource();
-        dataSource.setProxyFilters(Lists.newArrayList(statFilter()));
-        return  dataSource;
-    }
+//    @Bean(initMethod = "init",destroyMethod = "close")
+//    public DruidDataSource dataSource(){
+//        DruidDataSource dataSource=new DruidDataSource();
+//        dataSource.setProxyFilters(Lists.newArrayList(statFilter()));
+//        return  dataSource;
+//    }
     //bean注解,成为spring的bean,利用filter将慢sql的日志打印出来
     @Bean
     public Filter statFilter(){
diff --git a/src/main/resources/GeneratorMapper.xml b/src/main/resources/GeneratorMapper.xml
new file mode 100644
index 0000000..7ed6e9f
--- /dev/null
+++ b/src/main/resources/GeneratorMapper.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE generatorConfiguration
+        PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
+        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
+<generatorConfiguration>
+    <!-- 指定连接数据库的 JDBC 驱动包所在位置,指定到你本机的完整路径 -->
+    <classPathEntry location="D:\ENV\repository\com\oracle\ojdbc\ojdbc8\19.3.0.0\ojdbc8-19.3.0.0.jar"/>
+    <classPathEntry location="F:\desktop\orai18n-19.7.0.0.jar"/>
+    <!-- 配置 table 表信息内容体,targetRuntime 指定采用 MyBatis3 的版本 -->
+    <context id="tables" targetRuntime="MyBatis3">
+        <!-- 抑制生成注释,由于生成的注释都是英文的,可以不让它生成 -->
+        <commentGenerator>
+            <property name="suppressAllComments" value="true"/>
+        </commentGenerator>
+        <!-- 配置数据库连接信息 -->
+        <jdbcConnection driverClass="oracle.jdbc.driver.OracleDriver"
+                        connectionURL="jdbc:oracle:thin:@//112.98.126.2:21521/orcl"
+                        userId="c##ard_user"
+                        password="123456">
+        </jdbcConnection>
+        <!-- 生成 model 类,targetPackage 指定 model 类的包名, targetProject 指定
+       生成的 model 放在 eclipse 的哪个工程下面-->
+        <javaModelGenerator targetPackage="com.ard.alarm.digitization.model"
+                            targetProject="src/main/java">
+            <property name="enableSubPackages" value="false"/>
+            <property name="trimStrings" value="false"/>
+        </javaModelGenerator>
+        <!-- 生成 MyBatis 的 Mapper.xml 文件,targetPackage 指定 mapper.xml 文件的
+       包名, targetProject 指定生成的 mapper.xml 放在 eclipse 的哪个工程下面 -->
+        <sqlMapGenerator targetPackage="mapper"
+                         targetProject="src/main/resources">
+            <property name="enableSubPackages" value="false"/>
+        </sqlMapGenerator>
+        <!-- 生成 MyBatis 的 Mapper 接口类文件,targetPackage 指定 Mapper 接口类的包
+       名, targetProject 指定生成的 Mapper 接口放在 eclipse 的哪个工程下面 -->
+        <javaClientGenerator type="XMLMAPPER"
+                             targetPackage="com.ard.alarm.digitization.mapper" targetProject="src/main/java">
+            <property name="enableSubPackages" value="false"/>
+        </javaClientGenerator>
+        <!-- 数据库表名及对应的 Java 模型类名 -->
+        <table tableName="DATABRIDGE" domainObjectName="Databridge"
+               enableCountByExample="false"
+               enableUpdateByExample="false"
+               enableDeleteByExample="false"
+               enableSelectByExample="false"
+               selectByExampleQueryId="false">
+            <!--使用实际的字段名-->
+            <property name="useActualColumnNames" value="true"/>
+            <columnOverride column="DB_GUID" property="id"/>
+            <columnOverride column="DB_XMMC" property="xmmc"/>
+            <columnOverride column="DB_FKEY" property="fKey"/>
+            <columnOverride column="DB_FNAME" property="fName"/>
+            <columnOverride column="DB_VALUE" property="value"/>
+            <columnOverride column="DB_DATETIME" property="dateTime"/>
+        </table>
+    </context>
+</generatorConfiguration>
\ No newline at end of file
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index bbc7292..7abba08 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -9,37 +9,100 @@
       max-file-size: 30MB
       max-request-size: 30MB
   datasource:
-      #  使用druid数据库连接池
-    druid:
-        #开启druid监控web
-      stat-view-servlet:
-        enabled: true
-      driver-class-name: org.postgresql.Driver
-      url: jdbc:postgresql://192.168.1.15:5432/ry-vue?stringtype=unspecified
-      username: postgres
-      password: postgres
-      #最大连接数
-      maxActive: 30
-      #最小连接数
-      minIdle: 5
-      #获取连接的最大等待时间
-      maxWait: 10000
-      #解决mysql8小时的问题
-      validation-query: SELECT 'X'
-      #空闲连接的检查时间间隔
-      timeBetweenEvictionRunsMillis: 60000
-      #空闲连接最小空闲时间
-      minEvictableIdleTimeMillis: 300000
+    dynamic:
+      primary: postgres #设置默认的数据源或者数据源组
+      strict: false #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源
+      druid: # 全局druid参数,单独数据源配置为空时取全局配置
+        # 连接池的配置信息
+        # 初始化大小,最小,最大
+        initial-size: 1
+        min-idle: 2
+        maxActive: 8
+        # 配置获取连接等待超时的时间
+        maxWait: 60000
+        # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
+        timeBetweenEvictionRunsMillis: 60000
+        # 配置一个连接在池中最小生存的时间,单位是毫秒
+        minEvictableIdleTimeMillis: 300000
+        validationQuery: SELECT 1 FROM DUAL
+        testWhileIdle: true
+        testOnBorrow: false
+        testOnReturn: false
+        # 打开PSCache,并且指定每个连接上PSCache的大小
+        poolPreparedStatements: true
+        maxPoolPreparedStatementPerConnectionSize: 20
+        # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
+        filters: stat,wall,slf4j
+        # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
+        connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
+      datasource:
+        oracle:
+          url: jdbc:oracle:thin:@//112.98.126.2:21521/orcl
+          username: c##ard_user
+          password: 123456
+          driver-class-name: oracle.jdbc.driver.OracleDriver
+          druid: #配置mysql 默认连接池参数
+            # 连接池的配置信息
+            # 初始化大小,最小,最大
+            initial-size: 3
+            min-idle: 3
+            maxActive: 8
+            # 配置获取连接等待超时的时间
+            maxWait: 600000
+            # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
+            timeBetweenEvictionRunsMillis: 60000
+            # 配置一个连接在池中最小生存的时间,单位是毫秒
+            minEvictableIdleTimeMillis: 300000
+            validationQuery: SELECT 1 FROM DUAL
+            testWhileIdle: true
+            testOnBorrow: false
+            testOnReturn: false
+            # 打开PSCache,并且指定每个连接上PSCache的大小
+            poolPreparedStatements: true
+            maxPoolPreparedStatementPerConnectionSize: 20
+            # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
+            filters: stat,wall,slf4j
+            # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
+            connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
+        postgres:
+          url: jdbc:postgresql://192.168.1.55:5432/ry-vue
+          username: postgres
+          password: postgres
+          driver-class-name: org.postgresql.Driver
+          druid: # 配置multi-datasource1 数据源连接池参数
+            # 连接池的配置信息
+            # 初始化大小,最小,最大
+            initial-size: 2
+            min-idle: 2
+            maxActive: 2
+            # 配置获取连接等待超时的时间
+            maxWait: 600000
+            # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
+            timeBetweenEvictionRunsMillis: 60000
+            # 配置一个连接在池中最小生存的时间,单位是毫秒
+            minEvictableIdleTimeMillis: 300000
+            validationQuery: SELECT 1
+            testWhileIdle: true
+            testOnBorrow: false
+            testOnReturn: false
+            # 打开PSCache,并且指定每个连接上PSCache的大小
+            poolPreparedStatements: true
+            maxPoolPreparedStatementPerConnectionSize: 20
+            # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
+            filters: stat,wall,slf4j
+            # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
+            connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
+
   # netty配置
   netty:
     udp:
       port: 40000
       enabled: true
     tcp:
-      enabled: true
+      enabled: false
   # mqtt配置
   mqtt:
-    host: tcp://192.168.1.15:1883
+    host: tcp://192.168.1.55:1883
     clientId: cc3
     username: admin
     password: xzx12345
@@ -62,8 +125,8 @@
 # 日志等级配置
 logging:
   level:
-    hikSdk: debug
-    mqtt: info
+    hikSdk: info
+    mqtt: debug
     netty: info
     external: info
     camera: info
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index fadf7d2..ad9a171 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -1,4 +1,4 @@
 spring:
   profiles:
-    active: prod
+    active: dev
 

--
Gitblit v1.9.3