1. 程式人生 > >Spring boot JdbcTemplate使用多資料來源配置

Spring boot JdbcTemplate使用多資料來源配置

1、看下專案目錄
這裡寫圖片描述

2、我們配置下application.properties,連線的兩個資料庫new_schema和new_test

spring.datasource.primary.url =jdbc:mysql://localhost:3306/new_schema?useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.primary.username = root
spring.datasource.primary.password = 123456
spring.datasource
.primary.driverClassName = com.mysql.jdbc.Driver spring.datasource.secondary.url =jdbc:mysql://localhost:3306/new_test?useUnicode=true&characterEncoding=utf-8&useSSL=false spring.datasource.secondary.username = root spring.datasource.secondary.password = 123456 spring.datasource.secondary.driverClassName
= com.mysql.jdbc.Driver # Specify the DBMS spring.jpa.database = MYSQL # Show or not log for each sql query spring.jpa.show-sql = true # Hibernate ddl auto (create, create-drop, update) spring.jpa.hibernate.ddl-auto = update # Naming strategy spring.jpa.hibernate.naming.strategy = org.hibernate.cfg
.ImprovedNamingStrategy # stripped before adding them to the entity manager) spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect

3、定義個配置類DataSourceConfig類

package com.yuna.demo;

import javax.sql.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;

@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);
    }

}

4、在ApplicationTests測試類中,寫幾個測試方法

package com.yuna.demo;


import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.test.context.junit4.SpringRunner;



@RunWith(SpringRunner.class)
@SpringBootTest
public class ApplicationTests {

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

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



    @Before
    public void setUp() {
        jdbcTemplate1.update("delete from user");
        jdbcTemplate2.update("delete from user");
    }



    @Test
    public void test() throws Exception {

        jdbcTemplate1.update("insert into user(name,age) values(?,?)", "yuna", 18);

        jdbcTemplate1.update("insert into user(name,age) values(?,?)", "sam", 23);

        jdbcTemplate2.update("insert into user(name, age) values(?,?)", "jackson", 3);

        System.out.println("count 1 = " + jdbcTemplate1.queryForObject("select count(1) from user", String.class));

        System.out.println("count 2 = " + jdbcTemplate2.queryForObject("select count(1) from user", String.class));

    }

}

5、我們往new_schema資料庫的user表插入了2條記錄,往new_test資料庫中插入1條記錄
這裡寫圖片描述

6、在資料庫中查詢相關
(1)、new_test資料庫的資料查詢

這裡寫圖片描述

(2)、new_schema資料庫的資料查詢

這裡寫圖片描述