springboot JdbcTemplate执行mysql 多数据源方法

业务中需要用到一个服务连接多个mysql数据库源的需求,整理一个小demo记录一下。
用到springboot1.5.4,通过JdbcTemplate执行sql,文末demo地址。

step1:添加datasource配置类

import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;
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.JdbcTemplate;
 
import javax.sql.DataSource;
 
 
@Configuration
public class DataSourceConfig {
    @Bean(name = "primaryDataSource")
    @Qualifier("primaryDataSource")
    @ConfigurationProperties(prefix="spring.datasource.primary")
    public DataSource primaryDataSource() {
        return DataSourceBuilder.create().build();
    }
    @Bean(name = "secondaryDataSource")
    @Qualifier("secondaryDataSource")
    @Primary
    @ConfigurationProperties(prefix="spring.datasource.secondary")
    public DataSource secondaryDataSource() {
        return DataSourceBuilder.create().build();
    }
 
    @Bean(name = "primaryJdbcTemplate")
    public JdbcTemplate primaryJdbcTemplate(
            @Qualifier("primaryDataSource") DataSource dataSource) {
        return new JdbcTemplate(dataSource);
    }
    @Bean(name = "secondaryJdbcTemplate")
    public JdbcTemplate secondaryJdbcTemplate(
            @Qualifier("secondaryDataSource") DataSource dataSource) {
        return new JdbcTemplate(dataSource);
    }
}

step2:properties问价添加mysql配置


spring.datasource.primary.driver-class-name=com.mysql.jdbc.Driver
# input your first mysql db connection info
spring.datasource.primary.url=jdbc:mysql://192.168.0.1:3306/test?autoReconnect=true&useSSL=false
spring.datasource.primary.username=root
spring.datasource.primary.password=root


spring.datasource.secondary.driver-class-name=com.mysql.jdbc.Driver
# input your second mysql db connection info
spring.datasource.secondary.url=jdbc:mysql://192.168.0.2:3306/test?autoReconnect=true&useSSL=false
spring.datasource.secondary.username=root
spring.datasource.secondary.password=root

step3:注入,并测试

    @Autowired
    @Qualifier("primaryJdbcTemplate")
    protected JdbcTemplate primaryJdbcTemplate;
    
    @Autowired
    @Qualifier("secondaryJdbcTemplate")
    protected JdbcTemplate secondaryJdbcTemplate;

    @Override
    public void run(String... args) throws Exception {
        String sql1 = "show databases;";
        List<String> source1 = 
                primaryJdbcTemplate.queryForList(sql1,String.class);
        String sql2 = "show databases;";
        List<String> source2 = 
                secondaryJdbcTemplate.queryForList(sql2,String.class);
        System.out.println("source1 printing--------------------------->");
        for(String s:source1) {
            System.out.println(s);
        }
        System.out.println("source2 printing--------------------------->");
        for(String s:source2) {
            System.out.println(s);
        }
    }

完成

完整的demo地址请点击我

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 47,005评论 6 342
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,273评论 19 139
  • 我好像生了一场大病, 自此我看你的眼神无比的深情, 我始终不肯道出诚恳的誓言, 却又无比渴求你我的圆满。 你只知道...
    糜情阅读 140评论 3 1
  • Java程序员进行并发编程时,相比于其他语言的程序员而言要倍感幸福,因为并发编程大师Doug Lea不遗余力地为J...
    luoxn28阅读 486评论 0 0
  • 今天是6月11日,比现在晚上十点三十四分,距离自己真正使用简书刚好一个月,一个月的时间足以让简书成为一个习惯。 本...
    简小取阅读 267评论 14 6