以两个数据源为例,application.properties有两组数据库配置,再配置对应的Config与mapper,各自处理各自的业务。
1.配置pom.xml依赖
首先配置好jdbc、mybatis的依赖:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.4.RELEASE</version>
</parent>
<dependencies>
<!--Spring Boot依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.36</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.2.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.3.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.6.3</version>
</dependency>
......
</dependencies>
2.配置application.properties
#主数据库
spring.datasource.gm.jdbcUrl=jdbc:mysql://xx.xx.xx.xx/gmtools?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true
spring.datasource.gm.username=xxxx
spring.datasource.gm.password=xxxx
spring.datasource.gm.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.bi.jdbcUrl=jdbc:mysql://xx.xx.xx.xx/bitools?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true
spring.datasource.bi.username=xxxx
spring.datasource.bi.password=xxxx
spring.datasource.bi.driver-class-name=com.mysql.jdbc.Driver
3.数据库连接
主数据库连接通过 @Primary
进行注解:
@Configuration
// 扫描 Mapper 接口并容器管理
//@EnableTransactionManagement //如果mybatis中service实现类中加入事务注解,需要此处添加该注解
@MapperScan(basePackages = "com.kodgames.gmtools.dao.gm", sqlSessionFactoryRef = "gmSqlSessionFactory")
public class GmDataDaoConfig {
@Bean(name = "gmDataSource")
@Primary
@ConfigurationProperties(prefix = "spring.datasource.gm") // application.properteis中对应属性的前缀
public DataSource gmDataSource() {
return DataSourceBuilder.create().type(com.zaxxer.hikari.HikariDataSource.class).build();
}
@Bean
@Primary
public SqlSessionFactory gmSqlSessionFactory(@Qualifier("gmDataSource") DataSource gmDataSource) throws Exception {
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
factoryBean.setDataSource(gmDataSource);
factoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mybatis/GmDataDaoMapper.xml"));
return factoryBean.getObject();
}
}
从数据库连接:
@Configuration
@MapperScan(basePackages = "com.kodgames.gmtools.dao.bi", sqlSessionFactoryRef = "biSqlSessionFactory")
public class BIDataDaoConfig {
@Bean(name = "biDataSource")
@ConfigurationProperties(prefix = "spring.datasource.bi") // application.properteis中对应属性的前缀
public DataSource biDataSource() {
return DataSourceBuilder.create().type(com.zaxxer.hikari.HikariDataSource.class).build();
}
@Bean
public SqlSessionFactory biSqlSessionFactory(@Qualifier("biDataSource") DataSource biDataSource) throws Exception {
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
factoryBean.setDataSource(biDataSource);
factoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mybatis/BIDataDaoMapper.xml"));
return factoryBean.getObject();
}
}
如果再增加一个数据源就得从头到尾增加一遍。