1.pom配置
org.springframework.boot spring-boot-starter-data-jdbcmysql mysql-connector-javaruntime
2.application.properties配置文件
spring.one.datasource.url=jdbc:mysql://127.0.0.1:3306/test2?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false&serverTimezone=Asia/Shanghai spring.one.datasource.username=root spring.one.datasource.password=123456 spring.two.datasource.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false&serverTimezone=Asia/Shanghai spring.two.datasource.username=root spring.two.datasource.password=123456
3.启动类SpringBootApplication.class
//移除DataSourceAutoConfiguration、DataSourceTransactionManagerAutoConfiguration、JdbcTemplateAutoConfiguration
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class,
DataSourceTransactionManagerAutoConfiguration.class,
JdbcTemplateAutoConfiguration.class})
public class SpringBootApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootApplication.class, args);
}
}
4.配置不同数据源配置文件
@Configuration
@Slf4j
public class oneDataSourceConfig {
@Bean
@ConfigurationProperties("spring.one.datasource")
public DataSourceProperties oneDataSourceProperties(){
return new DataSourceProperties();
}
@Bean
public DataSource oneDateSource(){
DataSourceProperties oneDataSourceProperties = oneDataSourceProperties();
log.info("oneDatasource:"+oneDataSourceProperties.getUrl());
return oneDataSourceProperties.initializeDataSourceBuilder().build();
}
@Bean
public JdbcTemplate oneJdbcTemplate(){
return new JdbcTemplate(oneDateSource());
}
@Bean
@Resource
public PlatformTransactionManager onePlatformTransactionManager(){
return new DataSourceTransactionManager(oneDateSource());
}
}
@Configuration
@Slf4j
public class TwoDataSourceConfig {
@Bean
@ConfigurationProperties("spring.two.datasource")
public DataSourceProperties twoDataSourceProperties(){
return new DataSourceProperties();
}
@Bean
public DataSource twoDateSource(){
DataSourceProperties twoDataSourceProperties = twoDataSourceProperties();
log.info("twoDatasource:"+twoDataSourceProperties.getUrl());
return twoDataSourceProperties.initializeDataSourceBuilder().build();
}
@Bean
public JdbcTemplate twoJdbcTemplate(){
return new JdbcTemplate(twoDateSource());
}
@Bean
@Resource
public PlatformTransactionManager twoPlatformTransactionManager(){
return new DataSourceTransactionManager(twoDateSource());
}
}
5.测试
@Resource(name = "oneJdbcTemplate")
JdbcTemplate jdbcTemplate;
@Resource(name = "twoJdbcTemplate")
JdbcTemplate jdbcTemplate2;
@GetMapping("test")
public void test(){
Integer fpck = jdbcTemplate.queryForObject("select count(1) from tb_stockout where order_type = ? ", Integer.class, "FPCK");
Integer fpck1 = jdbcTemplate2.queryForObject("select count(1) from tb_stockout where order_type = ? ", Integer.class, "FPCK");
System.out.println(fpck);
System.out.println(fpck1);
}



