springboot动态切换mysql连接,注:连接我是动态给你的
时间: 2023-11-28 10:05:47 浏览: 48
你可以使用Spring Boot的多数据源配置来实现动态切换MySQL连接。
首先,你需要在application.properties文件中配置多个数据源的连接信息,如下所示:
```
# 主数据源
spring.datasource.url=jdbc:mysql://localhost:3306/db1
spring.datasource.username=root
spring.datasource.password=root
# 第二个数据源
second.datasource.url=jdbc:mysql://localhost:3306/db2
second.datasource.username=root
second.datasource.password=root
```
然后,你可以创建两个数据源配置类,一个用于主数据源,另一个用于第二个数据源。在这两个配置类中,你需要使用@Primary注解和@ConfigurationProperties注解来指定默认数据源和非默认数据源的配置信息。
```
@Configuration
@EnableTransactionManagement
public class PrimaryDataSourceConfig {
@Primary
@Bean(name = "primaryDataSource")
@ConfigurationProperties(prefix = "spring.datasource")
public DataSource primaryDataSource() {
return DataSourceBuilder.create().build();
}
@Primary
@Bean(name = "primaryJdbcTemplate")
public JdbcTemplate primaryJdbcTemplate(@Qualifier("primaryDataSource") DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
}
@Configuration
@EnableTransactionManagement
public class SecondDataSourceConfig {
@Bean(name = "secondDataSource")
@ConfigurationProperties(prefix = "second.datasource")
public DataSource secondDataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "secondJdbcTemplate")
public JdbcTemplate secondJdbcTemplate(@Qualifier("secondDataSource") DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
}
```
接下来,在你的代码中,你可以使用JdbcTemplate来执行SQL语句。如果你需要切换数据源,你只需要在运行时动态地注入对应的数据源即可。
```
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private JdbcTemplate primaryJdbcTemplate;
@Autowired
private JdbcTemplate secondJdbcTemplate;
@GetMapping("/list")
public List<User> userList(@RequestParam("db") String dbName) {
JdbcTemplate jdbcTemplate = null;
if (dbName.equals("db1")) {
jdbcTemplate = primaryJdbcTemplate;
} else if (dbName.equals("db2")) {
jdbcTemplate = secondJdbcTemplate;
}
String sql = "SELECT * FROM user";
return jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(User.class));
}
}
```
以上就是动态切换MySQL连接的实现方法,希望能够对你有所帮助。