pom
<!-- mybatis -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.0</version>
</dependency>
<!-- mysql -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.16</version>
</dependency>
数据源使用的默认的数据源,使用druid
需要导入依赖:
<!-- Druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.6</version>
</dependency>
思路:把默认的配置换成自己的。
配置类配置自己的数据源
db1
@Configuration
//指定加入注解@Mapper的包、该数据源对应的持久层、sqlSessionFactor
@MapperScan(basePackages = {"com.ning.dao.db1"},sqlSessionFactoryRef = "db1SqlSessionFactory")
public class DB1DataSourcesConfig {
@Bean("db1")
@Primary //存在多个同类型bean时优先自动加载
@ConfigurationProperties(prefix = "spring.datasource.db1")//对应配置文件的数据源路径
public DataSource db1DataSource(){
return DataSourceBuilder.create().build();
}
@Bean("db1SqlSessionFactory")
@Primary
public SqlSessionFactory sqlSessionFactory(@Qualifier("db1") DataSource dataSource) throws Exception {
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(dataSource);
sqlSessionFactoryBean.setMapperLocations(getResource1());//扫描mapper.xml文件
org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration();
configuration.setMapUnderscoreToCamelCase(true);//驼峰命名匹配
sqlSessionFactoryBean.setTypeAliasesPackage("com.ning.model.db1");//扫描该数据源下的model
sqlSessionFactoryBean.setConfiguration(configuration);
return sqlSessionFactoryBean.getObject();
}
Resource[] getResource1(){
ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
try {
return resolver.getResources("classpath*:mapper/db1/*Mapper.xml");
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Bean("dataSourceTransactionManager1")
@Primary
public DataSourceTransactionManager dataSourceTransactionManager(@Qualifier("db1") DataSource dataSource){
DataSourceTransactionManager manager = new DataSourceTransactionManager();
manager.setDataSource(dataSource);
return manager;
}
}
db2
@Configuration
@MapperScan(basePackages = {"com.ning.dao.db2"},sqlSessionFactoryRef = "db2SqlSessionFactory")
public class DB2DataSourcesConfig {
@Bean("db2")
@ConfigurationProperties(prefix = "spring.datasource.db2")
public DataSource db1DataSource(){
return DataSourceBuilder.create().build();
}
@Bean("db2SqlSessionFactory")
public SqlSessionFactory sqlSessionFactory(@Qualifier("db2") DataSource dataSource) throws Exception {
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(dataSource);
sqlSessionFactoryBean.setMapperLocations(getResource2());
org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration();
configuration.setMapUnderscoreToCamelCase(true);
sqlSessionFactoryBean.setTypeAliasesPackage("com.ning.model.db2");
sqlSessionFactoryBean.setConfiguration(configuration);
return sqlSessionFactoryBean.getObject();
}
Resource[] getResource2(){
ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
try {
return resolver.getResources("classpath*:mapper/db2/*Mapper.xml");
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Bean("dataSourceTransactionManager2")
public DataSourceTransactionManager dataSourceTransactionManager(@Qualifier("db2") DataSource dataSource){
DataSourceTransactionManager manager = new DataSourceTransactionManager();
manager.setDataSource(dataSource);
return manager;
}
}
配置文件
spring:
datasource:
db1:
username: root
password: root
jdbc-url: jdbc:mysql://localhost:3306/mp_lock_test?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
driver-class-name: com.mysql.cj.jdbc.Driver
configuration:
maximum-pool-size: 30
db2:
username: root
password: root
jdbc-url: jdbc:mysql://localhost:3306/mp_lock_test02?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
driver-class-name: com.mysql.cj.jdbc.Driver