当前位置: 代码网 > it编程>数据库>Mysql > 若依ruoyi 动态多数据源配置(多种不同类型的数据库mysql,oracle,sqlite3,sqlserver等等)

若依ruoyi 动态多数据源配置(多种不同类型的数据库mysql,oracle,sqlite3,sqlserver等等)

2024年08月06日 Mysql 我要评论
【代码】若依ruoyi 动态多数据源配置(多种不同类型的数据库mysql,oracle,sqlite3,sqlserver等等)

我使用的是mybaits-plus,具体根据自己的情况做更改

增加其他数据库的配置 ,我这里是sqlite3与sqlserver


        <dependency>
            <groupid>org.xerial</groupid>
            <artifactid>sqlite-jdbc</artifactid>
            <version>3.36.0.3</version>
        </dependency>

        <dependency>
            <groupid>com.microsoft.sqlserver</groupid>
            <artifactid>mssql-jdbc</artifactid>
            <version>10.2.3.jre8</version>
        </dependency>

         <dependency>
            <groupid>com.baomidou</groupid>
            <artifactid>mybatis-plus-boot-starter</artifactid>
             <version>3.5.1</version>
        </dependency>

        <!-- 动态数据源 -->
        <dependency>
            <groupid>com.baomidou</groupid>
            <artifactid>dynamic-datasource-spring-boot-starter</artifactid>
            <version>3.5.2</version>
        </dependency>

    <!-- 阿里数据库连接池 -->
        <dependency>
            <groupid>com.alibaba</groupid>
            <artifactid>druid-spring-boot-starter</artifactid>
            <version>1.2.16</version>
        </dependency>


在ruoyi-admin的application-druid.yml的配置

# 数据源配置
spring:
  autoconfigure:
    # 排除 druid 自动配置
    exclude: com.alibaba.druid.spring.boot.autoconfigure.druiddatasourceautoconfigure
  datasource:
    # 指定使用 druid 数据源
    type: com.alibaba.druid.pool.druiddatasource
    dynamic:
      #设置默认的数据源或者数据源组,默认值即为 master
      primary: master
      datasource:
        # 主库数据源
        master:
          url: jdbc:sqlite:sql/aaa.db
          driver-class-name: org.sqlite.jdbc
        # 从库数据源
        slave:
          driverclassname: com.microsoft.sqlserver.jdbc.sqlserverdriver
          url: jdbc:sqlserver://127.0.0.1:1433;databasename=test;encrypt=false
          username: sa
          password: aaaaa
      druid:
        # 初始连接数
        initialsize: 5
        # 最小连接池数量
        minidle: 10
        # 最大连接池数量
        maxactive: 20
        # 配置获取连接等待超时的时间
        maxwait: 60000
        # 配置连接超时时间
        connecttimeout: 30000
        # 配置网络超时时间
        sockettimeout: 60000
        # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
        timebetweenevictionrunsmillis: 60000
        # 配置一个连接在池中最小生存的时间,单位是毫秒
        minevictableidletimemillis: 300000
        # 配置一个连接在池中最大生存的时间,单位是毫秒
        maxevictableidletimemillis: 900000
        # 配置检测连接是否有效
        validationquery: select 1
        testwhileidle: true
        testonborrow: false
        testonreturn: false
        webstatfilter:
          enabled: true
        statviewservlet:
          enabled: true
          # 设置白名单,不填则允许所有访问
          allow:
          url-pattern: /druid/*
          login-username: aaa
          login-password: aaaa
        filter:
          stat:
            enabled: true
            # 慢sql记录
            log-slow-sql: true
            slow-sql-millis: 1000
            merge-sql: true
          wall:
            config:
              multi-statement-allow: true

在ruoyi-framework的中修改druidproperties类与druidconfig类

package com.ruoyi.framework.config.properties;

import lombok.data;
import org.springframework.boot.context.properties.configurationproperties;
import org.springframework.context.annotation.configuration;

/**
 * druid 配置属性
 *
 * @author ruoyi
 */
@data
@configuration
@configurationproperties(prefix = "spring.datasource.dynamic.druid")
public class druidproperties {

    private int initialsize;

    private int minidle;

    private int maxactive;

    private int maxwait;

    private int connecttimeout;

    private int sockettimeout;

    private int timebetweenevictionrunsmillis;

    private int minevictableidletimemillis;

    private int maxevictableidletimemillis;

    private string validationquery;

    private boolean testwhileidle;

    private boolean testonborrow;

    private boolean testonreturn;

    private statviewservlet statviewservlet = new statviewservlet();

    @data
    public static class statviewservlet {

        private string urlpattern;
        private string loginusername;
        private string loginpassword;
    }


}


package com.ruoyi.framework.config;

import com.alibaba.druid.support.http.statviewservlet;
import com.ruoyi.framework.config.properties.druidproperties;
import org.springframework.beans.factory.annotation.autowired;
import org.springframework.boot.autoconfigure.condition.conditionalonmissingbean;
import org.springframework.boot.web.servlet.servletregistrationbean;
import org.springframework.context.annotation.bean;
import org.springframework.context.annotation.configuration;
import javax.servlet.*;


/**
 * druid 配置多数据源
 *
 * @author ruoyi
 */
@configuration
public class druidconfig {

    @autowired
    private druidproperties druidproperties;


    /**
     * 配置druid 监控启动页面
     *
     * @return servletregistrationbean
     */
    @bean
    @conditionalonmissingbean
    public servletregistrationbean<servlet> druidstartviewservlet() {
        druidproperties.statviewservlet statviewservlet = druidproperties.getstatviewservlet();
        servletregistrationbean<servlet> servletregistrationbean = new servletregistrationbean<>(new statviewservlet(), statviewservlet.geturlpattern());
        // 白名单
        //servletregistrationbean.addinitparameter("allow", "127.0.0.1");
        // 黑名单
//        servletregistrationbean.addinitparameter("deny", "");
        // 登录查看信息的账密,用于登录druid监控后台
        servletregistrationbean.addinitparameter("loginusername", statviewservlet.getloginusername());
        servletregistrationbean.addinitparameter("loginpassword", statviewservlet.getloginpassword());
        // 是否能够重置数据
        servletregistrationbean.addinitparameter("resetenable", "true");
        return servletregistrationbean;
    }
}

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com