JAVA 数据源 连接池 +Srping boot2.0多数据源配置Demo

本文详细介绍了在SpringBoot中如何配置多个数据源,包括使用YAML文件配置数据库连接参数,通过DataSourceBuilder创建数据源,以及如何在代码中通过JdbcTemplate操作不同数据库。适用于需要在单一应用中同时连接并操作多个数据库的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据源:就是连接到数据库的一条路径,记录了连接到哪个数据库,以及如何链接。

连接池:是存放数据库链接对象的一个缓存池,需要数据链接的时候就从“缓存池”中取出。

DataSource: 包含 连接池 和 连接池管理。

原理关系: 在系统初始化的时候,将数据库连接作为对象缓存在内存中,当用户需要访问数据库时,并非建立一个连接,
       	  而是从连接池中取出一个已建立的空间连接对象

原生JDBC:

        //注册驱动
        Class.forName("com.mysql.jdbc.Driver");
        //连接地址
        String url="jdbc:mysql://127.0.0.1:3306/app?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true";
        //获取连接对象
        Connection conn = DriverManager.getConnection(url, "root", "root");
        //获取执行对象
        Statement statement = conn.createStatement();
        //执行sql,处理结果等...
        ResultSet rs = statement.executeQuery("select count(*) from msg_center ");

**Spring boot --2.1.0.RELEASE**配置多数据源

1.yml文件 – 默认连接池是Hikari

spring:
  datasource:
    app:
      jdbc-url: jdbc:mysql://127.0.0.1:3306/app?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true
      username: root
      password: root
      driver-class-name: com.mysql.jdbc.Driver
    offical:
      jdbc-url: jdbc:mysql://127.0.0.1:3306/offical?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true
      username: root
      password: root
      driver-class-name: com.mysql.jdbc.Driver
    plat:
      jdbc-url: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true
      username: root
      password: root
      driver-class-name: com.mysql.jdbc.Driver

2.配置类

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;

/**
 * 何xiao数
 */
@Configuration
public class DataSourceConfig {

    //读取配置,创建返回 DataSource
    //@Autowired和@Qualifier结合使用时,自动注入的策略就从byType转变成byName了。
    //@Qualifier先声明后使用,相当于多个实现起多个不同的名字,注入时候告诉我你要注入哪个
    @Bean(name = "appDataSource")
    @Qualifier("appDataSource")
    @ConfigurationProperties(prefix="spring.datasource.app")
    public DataSource appDataSource() {
        return DataSourceBuilder.create().build();
    }

    //DataSource注册到JdbcTemplate之中
    //jdbcTemplate是Spring的一部分,是对数据库的操作在jdbc的封装,处理了资源的建立和释放
    //Spring 模版设计模式
    @Bean(name = "appJdbcTemplate")
    public JdbcTemplate appJdbcTemplate(
            @Qualifier("appDataSource") DataSource dataSource) {
        return new JdbcTemplate(dataSource);
    }

    @Bean(name = "officalDataSource")
    @Qualifier("officalDataSource")
    @ConfigurationProperties(prefix="spring.datasource.offical")
    public DataSource officalDataSource() {
        return DataSourceBuilder.create().build();
    }


    @Bean(name = "officalJdbcTemplate")
    public JdbcTemplate officalJdbcTemplate(
            @Qualifier("officalDataSource") DataSource dataSource) {
        return new JdbcTemplate(dataSource);
    }

    //@Primary:自动装配时当出现多个Bean候选者时,被注解为@Primary的Bean将作为首选者,否则将抛出异常
    //相当于,设置默认数据源
    @Bean(name = "platDataSource")
    @Qualifier("platDataSource")
    @Primary  //默认数据源
    @ConfigurationProperties(prefix="spring.datasource.plat")
    public DataSource platDataSource() {
        return DataSourceBuilder.create().build();
    }

    @Bean(name = "platJdbcTemplate")
    public JdbcTemplate platJdbcTemplate(
            @Qualifier("platDataSource") DataSource dataSource) {
        return new JdbcTemplate(dataSource);
    }

}

注意!!:是同一个连接地址上的不同数据库!!!,配置好,在sql中加上数据库的名称eg:heal.menu

抽根儿烟再说!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值