# dynamic-ds **Repository Path**: hw1995/dynamic-ds ## Basic Information - **Project Name**: dynamic-ds - **Description**: 动态数据源 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2019-05-10 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 基于RoutingDataSource的动态数据源切换工具包,简单易用 ## 版本jdk1.8+ ## 一、使用方式: 使用@EnableDynamicDS注解开启动态数据源切换功能,配置DynamicRoutingDataSource动态路由数据源。 ```` @EnableDynamicDS @Configuration public class DynamicDSConfiguration { @Bean(name = "ds0") @Primary @ConfigurationProperties(prefix = "spring.datasource.ds0") public DataSource primaryDataSource() { System.out.println("-------------------- primaryDataSource init ---------------------"); return DataSourceBuilder.create().type(DruidDataSource.class).build(); } @Bean(name = "ds1") @ConfigurationProperties(prefix = "spring.datasource.ds1") public DataSource secondaryDataSource() { System.out.println("-------------------- secondaryDataSource init ---------------------"); return DataSourceBuilder.create().type(DruidDataSource.class).build(); } @Bean(name = "dynamicDataSource") public DataSource dynamicDs(@Autowired @Qualifier("ds0") DataSource ds0, @Autowired @Qualifier("ds1") DataSource ds1) { System.out.println("-------------------- dynamicDataSource init ---------------------"); DynamicRoutingDataSource drds = new DynamicRoutingDataSource(); Map targetDataSources = new HashMap<>(); targetDataSources.put("ds0", ds0); targetDataSources.put("ds1", ds1); // 设置可切换的数据源集合 drds.setTargetDataSources(targetDataSources); // 设置默认数据源 drds.setDefaultTargetDataSource(ds0); return drds; } @Bean public JdbcTemplate jdbcTemplate(){ return new JdbcTemplate(dynamicDs(primaryDataSource(),secondaryDataSource())); } } ```` 使用注解@DynamicDs("数据源名称")进行动态切换 ```` @Service public class DynamicDSService { @Autowired JdbcTemplate jdbcTemplate; @DynamicDS("ds1") public Map test() { Map article = jdbcTemplate.queryForMap("select * from article where id =5"); return article; } } ````