Spring boot JdbcTemplate使用多数据源配置

7 篇文章 0 订阅
6 篇文章 0 订阅

注:使用上篇的Mac Spring boot(1.5.9) 使用JDBCTemplate操作数据库,现在我们使用两个数据库,都有个user表,对user表进行相关数据库操作

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数据库的数据查询

这里写图片描述

参考链接这里写链接内容

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值