JdbcTemplate多数据源使用

时间:2020-03-25 10:23 作者:playgame 阅读数:679
1、首先在application.properties配置多个数据源
#数据库A
spring.datasource.a.jdbcUrl=jdbc:mysql://127.0.0.1:3306/ADB
spring.datasource.a.username=root
spring.datasource.a.password=root
spring.datasource.a.driver.class.name=com.mysql.jdbc.Driver

#数据库B
spring.datasource.b.jdbcUrl=jdbc:mysql://127.0.0.1:3306/BDB
spring.datasource.b.username=root
spring.datasource.b.password=root
spring.datasource.b.driver.class.name=com.mysql.jdbc.Driver

#数据库C
spring.datasource.c.jdbcUrl=jdbc:mysql://127.0.0.1:3306/CDB
spring.datasource.c.username=root
spring.datasource.c.password=root
spring.datasource.c.driver.class.name=com.mysql.jdbc.Driver

2、下面通过代码把数据源放入Spring容器

import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
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;

/**
 * 类描述:数据源配置<br>
 * 包括方法:<br>
 * <li>
 *
 * @author : 
 * @version :v1.0
 * date : 2020/03/13 15:22
 * @since : JDK1.8
 * *************************************更新记录START*************************************
 * 版本:   修改日期:    修改人:
 * 修改内容:
 * *************************************更新记录END***************************************
 */
@Configuration
public class DataSourceConfig {
    /**
     * b 数据源
     *
     * @return b 数据源
     */
    @Bean(name = "bDataSource")
    @ConfigurationProperties("spring.datasource.b")
    public DataSource bDataSource() {
        return DataSourceBuilder.create().build();
    }

    /**
     * c 数据源
     *
     * @return c 数据源
     */
    @Bean(name = "cDataSource")
    @ConfigurationProperties("spring.datasource.c")
    public DataSource cDataSource() {
        return DataSourceBuilder.create().build();
    }

    /**
     * a 数据源
     *
     * @return a 数据源
     */
    @Primary
    @Bean(name = "aDataSource")
    @ConfigurationProperties("spring.datasource.a")
    public DataSource aDataSource() {
        return DataSourceBuilder.create().build();
    }

    /**
     * @param dataSource 数据源
     * @return 数据源
     * @Bean明确地指示了一种方法,什么方法呢——产生一个bean的方法, 并且交给Spring容器管理;
     * 因为它很明确地告诉被注释的方法,你给我产生一个Bean,然后交给Spring容器,
     * 实现依赖注入
     */
    @Bean(name = "bJdbcTemplate")
    public JdbcTemplate bTemplate(@Qualifier("bDataSource") DataSource dataSource) {
        return new JdbcTemplate(dataSource);
    }

    /**
     * @param dataSource 数据源
     * @return 数据源
     * @Bean明确地指示了一种方法,什么方法呢——产生一个bean的方法, 并且交给Spring容器管理;
     * 因为它很明确地告诉被注释的方法,你给我产生一个Bean,然后交给Spring容器,
     * 实现依赖注入
     */
    @Bean(name = "cJdbcTemplate")
    public JdbcTemplate cTemplate(@Qualifier("cDataSource") DataSource dataSource) {
        return new JdbcTemplate(dataSource);
    }

    /**
     * @param dataSource 数据源
     * @return 数据源
     * @Bean明确地指示了一种方法,什么方法呢——产生一个bean的方法, 并且交给Spring容器管理;
     * 因为它很明确地告诉被注释的方法,你给我产生一个Bean,然后交给Spring容器,
     * 实现依赖注入
     */
    @Bean(name = "aJdbcTemplate")
    public JdbcTemplate aJdbcTemplate(@Qualifier("aDataSource") DataSource dataSource) {
        return new JdbcTemplate(dataSource);
    }
}

3、使用
@Autowired
@Qualifier("cJdbcTemplate")
private JdbcTemplate jdbcTemplateC;

@Autowired
@Qualifier("aJdbcTemplate")
private JdbcTemplate jdbcTemplateA;

@Autowired
@Qualifier("bJdbcTemplate")
private JdbcTemplate jdbcTemplateB;



推荐文章

[推荐] .NET Core 学习资料精选:入门

[推荐] 数据库常见死锁原因及处理

[推荐] C# 设置Excel数据自适应行高、列宽的2种情况 (转)

[推荐] C++ vector 和set结合数字去重练习

[推荐] win7 .net core 部署 The library hostfxr.dll was found, but loading it from C:\<path_to_app>\hostfxr.dll failed

[推荐] JdbcTemplate多数据源使用

[推荐] 深入学习Redis(2):持久化

[推荐] asp.net core系列 67 Web压力测试工具WCAT

[推荐] .Net Core 2.0 获取客户端IP地址

[推荐] 第七天 让你的container实现跨主机访问

[推荐] 8天玩转并行开发——第八天 用VS性能向导解剖你的程序

[推荐] nodejs app.use(express.static) 静态文件托管 (四)

[推荐] C++ 稀疏表的练习

[推荐] asp.net core系列 33 EF查询数据 (2)

[推荐] C++ Lambda表达式练习

[推荐] Spring Boot 2 (五):Docker Compose + Spring Boot + Nginx + Mysql 实践

[推荐] 试试发布

[推荐] C++中 *p++ 到底是 *(p++) 还是 (*p)++ 1. 猜想

[推荐] JavaWeb-Log4j: WARN No appenders could be found for logger

[推荐] C++ 模板练习


评论列表



注册用户登录后才能发表评论,请登录注册,访问 博客首页