世界杯海报_u20世界杯德国 - jjswlx.com

【若依】框架多数据源切换
2025-10-07 08:20:07

文章目录

前言多数据源的使用1、在application-druid.yml配置从库数据源2、在(com.ruoyi.common.enums.DataSourceType)类添加数据源枚举3、在(com.ruoyi.framework.config.DruidConfig)配置读取数据源4、在(com.ruoyi.framework.config.DruidConfig)类dataSource方法添加数据源5、在需要被切换数据源的Service或Mapper方法上添加@DataSource注解,使用方法如下

前言

在实际开发中,经常可能遇到在一个应用中可能需要访问多个数据库的情况,在项目中使用注解来完成此项功能。

多数据源的使用

1、在application-druid.yml配置从库数据源

# 数据源配置

spring:

datasource:

type: com.alibaba.druid.pool.DruidDataSource

driverClassName: com.mysql.cj.jdbc.Driver

druid:

# 主库数据源

master:

url: jdbc:mysql://localhost:3306/xxx?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useSSL=false

username: root

password: 123456

# 从库数据源

slave:

# 从数据源开关/默认关闭

enabled: true

url: jdbc:mysql://localhost:3306/xxx2?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useSSL=false

username: root

password: 123456

# 初始连接数

initialSize: 5

# 最小连接池数量

minIdle: 10

# 最大连接池数量

maxActive: 20

# 配置获取连接等待超时的时间

maxWait: 60000

# 配置连接超时时间

connectTimeout: 30000

# 配置网络超时时间

socketTimeout: 60000

# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒

timeBetweenEvictionRunsMillis: 60000

# 配置一个连接在池中最小生存的时间,单位是毫秒

minEvictableIdleTimeMillis: 300000

# 配置一个连接在池中最大生存的时间,单位是毫秒

maxEvictableIdleTimeMillis: 900000

# 配置检测连接是否有效

validationQuery: SELECT 1 FROM DUAL

testWhileIdle: true

testOnBorrow: false

testOnReturn: false

webStatFilter:

enabled: true

statViewServlet:

enabled: true

# 设置白名单,不填则允许所有访问

allow:

url-pattern: /druid/*

# 控制台管理用户名和密码

login-username: ruoyi

login-password: 123456

filter:

stat:

enabled: true

# 慢SQL记录

log-slow-sql: true

slow-sql-millis: 1000

merge-sql: true

wall:

config:

multi-statement-allow: true

2、在(com.ruoyi.common.enums.DataSourceType)类添加数据源枚举

/**

* 从库

*/

SLAVE

3、在(com.ruoyi.framework.config.DruidConfig)配置读取数据源

@Bean

@ConfigurationProperties("spring.datasource.druid.slave")

@ConditionalOnProperty(prefix = "spring.datasource.druid.slave", name = "enabled", havingValue = "true")

public DataSource slaveDataSource(DruidProperties druidProperties)

{

DruidDataSource dataSource = DruidDataSourceBuilder.create().build();

return druidProperties.dataSource(dataSource);

}

4、在(com.ruoyi.framework.config.DruidConfig)类dataSource方法添加数据源

setDataSource(targetDataSources, DataSourceType.SLAVE.name(), "slaveDataSource");

5、在需要被切换数据源的Service或Mapper方法上添加@DataSource注解,使用方法如下

@DataSource(value = DataSourceType.SLAVE)

public List selectUserList(SysUser user)

{

return userMapper.selectUserList(user);

}

@Service

@DataSource(value = DataSourceType.SLAVE)

public class SysUserServiceImpl

其中value用来表示数据源名称,除MASTER和SLAVE其他均需要进行配置

注解参数说明

参数类型默认值描述valueDataSourceTypeDataSourceType.MASTER主库

以上就是若依框架自带的多数据源切换配置操作