This commit is contained in:
RuoYi
2018-12-20 19:41:56 +08:00
parent cfcd48b6b2
commit c404de1773
6 changed files with 34 additions and 160 deletions

View File

@ -43,7 +43,7 @@ public class DataSourceAspect
if (StringUtils.isNotNull(dataSource))
{
DynamicDataSourceContextHolder.setDateSoureType(dataSource.value());
DynamicDataSourceContextHolder.setDateSoureType(dataSource.value().name());
}
try

View File

@ -1,7 +1,6 @@
package com.ruoyi.framework.config;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.sql.DataSource;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
@ -9,64 +8,40 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;
import com.ruoyi.common.enums.DataSourceType;
import com.ruoyi.framework.datasource.DynamicDataSource;
import com.ruoyi.framework.datasource.SysDatasource;
/**
* 数据源配置类
* druid 配置多数据源
*
* @author wangchl
*
* @author ruoyi
*/
@Configuration
public class DruidConfig {
public class DruidConfig
{
@Bean
@ConfigurationProperties("spring.datasource.druid.master")
public DataSource masterDataSource()
{
return DruidDataSourceBuilder.create().build();
}
@Bean
@ConfigurationProperties("spring.datasource.druid.master")
public DataSource masterDataSource() {
return DruidDataSourceBuilder.create().build();
}
@Bean
@ConfigurationProperties("spring.datasource.druid.slave")
@ConditionalOnProperty(prefix = "spring.datasource.druid.slave", name = "enabled", havingValue = "true")
public DataSource slaveDataSource()
{
return DruidDataSourceBuilder.create().build();
}
@Bean
@ConfigurationProperties("spring.datasource.druid.slave")
@ConditionalOnProperty(prefix = "spring.datasource.druid.slave", name = "enabled", havingValue = "true")
public DataSource slaveDataSource() {
return DruidDataSourceBuilder.create().build();
}
/**
*
* @param masterDataSource
* @param slaveDataSource
* @return
*/
@Bean(name = "dynamicDataSource")
@Primary
public DynamicDataSource dataSource(DataSource masterDataSource, DataSource slaveDataSource) {
Map<Object, Object> targetDataSources = new HashMap<>();
// 设置数据源列表
targetDataSources.put(DataSourceType.MASTER.name(), masterDataSource);
// 从数据库中直接读取数据库
JdbcTemplate jdbcTemplate = new JdbcTemplate(masterDataSource);
List<SysDatasource> dsList = jdbcTemplate.query("select * from sys_datasource", new Object[] {},
new BeanPropertyRowMapper<SysDatasource>(SysDatasource.class));
if (dsList != null) {
for (SysDatasource ds : dsList) {
DruidDataSource dds = new DruidDataSource();
dds.setUrl(ds.getUrl());
dds.setUsername(ds.getUser());
dds.setPassword(ds.getPwd());
dds.setDriverClassName("com.mysql.cj.jdbc.Driver");
// dds.setDbType(dbType);
targetDataSources.put(ds.getName(), dds);
}
}
return new DynamicDataSource(masterDataSource, targetDataSources);
}
@Bean(name = "dynamicDataSource")
@Primary
public DynamicDataSource dataSource(DataSource masterDataSource, DataSource slaveDataSource)
{
Map<Object, Object> targetDataSources = new HashMap<>();
targetDataSources.put(DataSourceType.MASTER.name(), masterDataSource);
targetDataSources.put(DataSourceType.SLAVE.name(), slaveDataSource);
return new DynamicDataSource(masterDataSource, targetDataSources);
}
}

View File

@ -1,68 +0,0 @@
package com.ruoyi.framework.datasource;
/**
* 动态数据源表 sys_datasource
*
* @author wangchl
* @date 2018-10-10
*/
public class SysDatasource {
/** ID */
private String id;
/** 密码 */
private String pwd;
/** 用户 */
private String user;
/** 地址 */
private String url;
/** 名称 */
private String name;
public void setId(String id)
{
this.id = id;
}
public String getId()
{
return id;
}
public void setPwd(String pwd)
{
this.pwd = pwd;
}
public String getPwd()
{
return pwd;
}
public void setUser(String user)
{
this.user = user;
}
public String getUser()
{
return user;
}
public void setUrl(String url)
{
this.url = url;
}
public String getUrl()
{
return url;
}
public void setName(String name)
{
this.name = name;
}
public String getName()
{
return name;
}
}