一、pom依赖
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.2.11</version>
</dependency>
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.1.2</version>
</dependency>
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.40</version>
</dependency>
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional>
</dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope>
</dependency>
二、yml配置
server:port: 8099
spring:datasource:type: com.alibaba.druid.pool.DruidDataSourcedruid:db1:url: jdbc:mysql://127.0.0.1:3306/hc_smart_agriculture?useLegacyDatetimeCode=false&useUnicode=true&characterEncoding=UTF-8&useSSL=false&&serverTimezone=Asia/Shanghaiusername: rootpassword: rootdriverClassName: com.mysql.jdbc.Driverdb2:url: jdbc:mysql://127.0.0.1:3306/card_manage?useLegacyDatetimeCode=false&useUnicode=true&characterEncoding=UTF-8&useSSL=false&&serverTimezone=Asia/Shanghaiusername: rootpassword: rootdriverClassName: com.mysql.jdbc.Driver
三、代码实现
主要是数据源配置,有几个数据源就配置几个,如下图中的config包下的配置文件
包结构
配置数据代码:
DB1配置:
package com.example.demo.config;import com.alibaba.druid.pool.DruidDataSource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
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.core.io.support.PathMatchingResourcePatternResolver;import javax.sql.DataSource;@Configuration
@MapperScan(basePackages = "com.example.demo.mapper.db1", sqlSessionFactoryRef = "oneSqlSessionFactory")
public class DB1Config {// 将这个对象放入Spring容器中@Bean(name = "oneDataSource")// 表示这个数据源是默认数据源@Primary// 读取application.properties中的配置参数映射成为一个对象// prefix表示参数的前缀@ConfigurationProperties(prefix = "spring.datasource.druid.db1")public DataSource getDateSource1() {return DataSourceBuilder.create().type(DruidDataSource.class).build();}@Bean(name = "oneSqlSessionFactory")// 表示这个数据源是默认数据源@Primary// @Qualifier表示查找Spring容器中名字为oneDataSource的对象public SqlSessionFactory oneSqlSessionFactory(@Qualifier("oneDataSource") DataSource datasource)throws Exception {SqlSessionFactoryBean bean = new SqlSessionFactoryBean();bean.setDataSource(datasource);bean.setMapperLocations(// 设置mybatis的xml所在位置new PathMatchingResourcePatternResolver().getResources("classpath*:mappers/db1/*.xml"));return bean.getObject();}@Bean("oneSqlSessionTemplate")// 表示这个数据源是默认数据源@Primarypublic SqlSessionTemplate oneSqlSessionTemplate(@Qualifier("oneSqlSessionFactory") SqlSessionFactory sessionFactory) {return new SqlSessionTemplate(sessionFactory);}
}
DB2配置:
package com.example.demo.config;import com.alibaba.druid.pool.DruidDataSource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
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.core.io.support.PathMatchingResourcePatternResolver;import javax.sql.DataSource;@Configuration
@MapperScan(basePackages = "com.example.demo.mapper.db2", sqlSessionFactoryRef = "twoSqlSessionFactory")
public class DB2Config {// 将这个对象放入Spring容器中@Bean(name = "twoDataSource")@ConfigurationProperties(prefix = "spring.datasource.druid.db2")public DataSource getDateSource1() {return DataSourceBuilder.create().type(DruidDataSource.class).build();}@Bean(name = "twoSqlSessionFactory")// @Qualifier表示查找Spring容器中名字为oneDataSource的对象public SqlSessionFactory twoSqlSessionFactory(@Qualifier("twoDataSource") DataSource datasource)throws Exception {SqlSessionFactoryBean bean = new SqlSessionFactoryBean();bean.setDataSource(datasource);bean.setMapperLocations(// 设置mybatis的xml所在位置new PathMatchingResourcePatternResolver().getResources("classpath*:mappers/db2/*.xml"));return bean.getObject();}@Bean("twoSqlSessionTemplate")public SqlSessionTemplate oneSqlSessionTemplate(@Qualifier("twoSqlSessionFactory") SqlSessionFactory sessionFactory) {return new SqlSessionTemplate(sessionFactory);}
}
通过上述步骤,即可写测试代码了。