SpringBoot配置多个数据库
前言
一个SpringBoot项目对应一个数据库,正常情况下能满足大部分的需求。但有时因为特殊需求,项目中要同时操作多个数据源,这时候就需要为SpringBoot配置多个数据源。
本文以IDEA + SpringBoot + Mybatis + Mysql为例,来实现多个数据源的访问控制。
开始之前先看一下项目最终的目录结构:
一. 新建SpringBoot项目
参考我的使用IDEA 搭建Spring Boot项目文章,新建一个SpringBoot项目
二. 添加第三方库
在pom.xml中添加以下内容
<!--mysql连接所需jar包-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<!--mybatis所需jar包-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.1</version>
</dependency>
<!-- alibaba JSON解析库 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
三. 配置文件application.properties
在配置文件中添加两个数据库相关的参数信息,端口号我这里设置成8081,不一定要同一台服务器,可以不同服务器,我为了测试方便,都连接到了本地的服务器。
红色框部分不一定要按照图中的写,可以自定义(后面编写配置类的时候要用到)
四. 配置类
因为要连接两个数据库,我写了两个配置类
@Configuration
@MapperScan(basePackages = {
"com.springboot.demo.mapper.first"}, sqlSessionFactoryRef = "firstSqlSessionFactory")
public class FirstDBConfig {
@Primary
@Bean(name = "firstDataSource")
@ConfigurationProperties(prefix="spring.datasource.first")
public DataSource firstDataSource(){
return DataSourceBuilder.create().build();
}
@Primary
@Bean(name = "firstSqlSessionFactory")
public SqlSessionFactory sqlSessionFactory(@Qualifier("firstDataSource") DataSource dataSource) throws Exception {
SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean();
sessionFactoryBean.