数据源:就是连接到数据库的一条路径,记录了连接到哪个数据库,以及如何链接。
连接池:是存放数据库链接对象的一个缓存池,需要数据链接的时候就从“缓存池”中取出。
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