阿里云建站和华为云建站,国外做展台搭建的设计网站,免费软件 全免费,搜外seo文章目录 1. 配置数据源信息2. 创建第一个数据源3. 创建第二个数据源4. 创建启动类及查询方法5. 启动服务6. 创建表及做数据7. 查询验证8. 详细代码总结 通过上一节的介绍#xff0c;我们已经知道了如何使用 Spring 进行数据源的配置以及应用。在一些复杂的应用中#xff0c;… 文章目录 1. 配置数据源信息2. 创建第一个数据源3. 创建第二个数据源4. 创建启动类及查询方法5. 启动服务6. 创建表及做数据7. 查询验证8. 详细代码总结 通过上一节的介绍我们已经知道了如何使用 Spring 进行数据源的配置以及应用。在一些复杂的应用中可能需要访问多个数据库每个数据库可能负责不同的业务功能或数据存储。 那么如果我们程序中需要两个或者两个以上数据源该怎么办呢 本文将介绍如何使用 Spring 实现多数据源的配置和使用。 1. 配置数据源信息
在创建数据源之前我们先预先定义好两个数据源的信息注意前缀要区分开。
spring.h2.console.enabledtrue
spring.h2.console.path/h2-console# 创建第一个数据源信息
spring.datasource.jdbc-urljdbc:h2:mem:db1
spring.datasource.driverClassNameorg.h2.Driver
spring.datasource.usernamesa
spring.datasource.password# 创建第二个数据源信息
spring.datasource2.jdbc-urljdbc:h2:mem:db2
spring.datasource2.driverClassNameorg.h2.Driver
spring.datasource2.usernamesa
spring.datasource2.password
2. 创建第一个数据源
创建第一个 Datasource1Config.java 文件然后使用 Configuration 注解声明这是一个配置类。再使用 Bean 配合 ConfigurationProperties 来获取数据源的信息用来创建 dataSource 和 jdbcTemplate 以备后面查询使用。
package com.cheney.demo.config;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.jdbc.core.JdbcTemplate;
import javax.sql.DataSource;Configuration
public class Datasource1Config {BeanConfigurationProperties(spring.datasource)public DataSource dataSource(){return DataSourceBuilder.create().build();}Beanpublic JdbcTemplate jdbcTemplate(DataSource dataSource){return new JdbcTemplate(dataSource);}
}3. 创建第二个数据源
创建第一个 Datasource2Config.java 文件然后使用 Configuration 注解声明这是一个配置类。再使用 Bean 配合 ConfigurationProperties 来获取数据源的信息用来创建 dataSource2 和 jdbcTemplate2 以备后面查询使用。
package com.cheney.demo.config;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.jdbc.core.JdbcTemplate;
import javax.sql.DataSource;Configuration
public class Datasource2Config {BeanConfigurationProperties(spring.datasource2)public DataSource dataSource2(){return DataSourceBuilder.create().build();}Beanpublic JdbcTemplate jdbcTemplate2(Qualifier(dataSource2) DataSource dataSource){return new JdbcTemplate(dataSource);}
}4. 创建启动类及查询方法
创建了一个正常的 Spring 启动类分别注入了两套 JdbcTemplate 和 对外访问接口。
package com.cheney.demo;import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.sql.SQLException;SpringBootApplication
RestController
Slf4j
public class DemoApplication {public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);}Autowiredprivate JdbcTemplate jdbcTemplate;Autowiredprivate JdbcTemplate jdbcTemplate2;RequestMapping(db1)public String getUserFromDataSource1() throws SQLException {return jdbcTemplate.queryForList(select * from t_user).toString();}RequestMapping(db2)public String getUserFromDataSource2(){return jdbcTemplate2.queryForList(select * from t_user).toString();}
}
5. 启动服务
通过控制台我们可以看到启动了两个数据库连接分别是 conn0 和 conn1 并且都打印出了 RUL 等信息 6. 创建表及做数据
1使用 h2 数据库控制台连接 db1 创建表并登陆数据
访问下面 URL http://localhost:8080/h2-console 使用 application.properties 里定义的第一个数据源的 URL 进行连接 点击 Connect 按钮进入控制台。输入 建表语句并插入一条数据 CREATE TABLE IF NOT EXISTS t_user (id INTEGER PRIMARY KEY AUTO_INCREMENT,name VARCHAR(32) NOT NULL,age INTEGER NOT NULL
);
INSERT INTO t_user (id, name, age) VALUES (1, cheney, 11);点击 Run绿色三角图标 这就完成了对数据源1的建表和做数据注意此条数据 age 是 11
1使用 h2 数据库控制台连接 db2 创建表并登陆数据
连接方法一致此时执行 sql
CREATE TABLE IF NOT EXISTS t_user (id INTEGER PRIMARY KEY AUTO_INCREMENT,name VARCHAR(32) NOT NULL,age INTEGER NOT NULL
);
INSERT INTO t_user (id, name, age) VALUES (1, cheney, 22);点击 Connect 按钮进入控制台。输入 建表语句并插入一条数据点击 Run绿色三角图标 这就完成了对数据源1的建表和做数据注意此条数据 age 是 22
7. 查询验证
使用浏览器先访问第一个数据源使用如下 URL http://localhost:8080/db1 和我们之前插入数据库的值一样 age 是 11
使用浏览器先访问第二个数据源使用如下 URL http://localhost:8080/db2 和我们之前插入数据库的值一样 age 是 22
这样就可以分开使用数据库了此处我们使用了两个数据源都是 h2 数据库你也可以使用两个不一样的数据库。此处仅做了查询你也可以做 insert 或者 update 等等。
8. 详细代码 https://github.com/cheney09/spring-practical-combat/tree/main/02/demo 总结
本文将介绍如何使用 Spring 实现多数据源通过一个简单的 Spring 多数据源的配置和使用示例。实际项目中你可能需要根据具体需求进行更复杂的配置和逻辑。希望这个示例能够帮助你理解如何在 Spring 应用程序中使用多个数据源。