JdbcTemplate多数据源使用

时间:2020-03-25 10:23 作者:playgame 阅读数:27
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;



评论列表




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