VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 编程开发 > Java教程 >
  • ruoyi(spring-boot)项目 druid 连接池配置多个数据源

为了容易区分,最好把不同数据库的代码放到不同目录下

1.首先修改 application-druid.yml

复制代码
druid:
            # 主库数据源
            master:
                url: jdbc:mysql://localhost:3306/ry
                username: root
                password: 123456
            # 从库数据源
            slave:#名称可以自定义,但是要记得代码里保持一致
                enabled: true#这属性不是必须的,但是建议加上,方便切换
                url: jdbc:mysql://localhost:3306/db
                username: root
                password: 123456
复制代码

2.在DataSourceType类添加数据源枚举

public enum DataSourceType
{
    MASTER,
    SLAVE //和druid.yml文件里保持一致
}

3.在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.在DruidConfig类dataSource方法添加数据源

复制代码
    @Bean(name = "dynamicDataSource")
    @Primary
    public DynamicDataSource dataSource(DataSource masterDataSource)
    {
        Map<Object, Object> targetDataSources = new HashMap<>();
        targetDataSources.put(DataSourceType.MASTER.name(), masterDataSource);
        setDataSource(targetDataSources, DataSourceType.SLAVE.name(), "slaveDataSource");
        return new DynamicDataSource(masterDataSource, targetDataSources);
    }
复制代码

5.在需要使用多数据源方法或类上添加@DataSource注解,其中value用来表示数据源

复制代码
@Service@DataSource(value = DataSourceType.SLAVE)
public class SysUserServiceImpl{
    // 优先级:先方法,后类,如果方法覆盖了类上的数据源类型,以方法的为准,否则以类上的为准
    @Service@DataSource(value = DataSourceType.MASTER)
    public List<SysUser> selectUserList(SysUser user){
        ...
    }    
}
复制代码

 来源:https://www.cnblogs.com/fengbol/p/15544661.html


相关教程