1.添加数据源配置
spring.datasource.primary.jdbc-url=jdbc:mysql://服务ip:6603/数据库名?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8
spring.datasource.primary.username=root
spring.datasource.primary.password=CmVG2MnrBpZb9EtG
spring.datasource.primary.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.slaver.jdbc-url=jdbc:mysql://服务ip:6603/数据库名?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8
spring.datasource.slaver.username=root
spring.datasource.slaver.password=CmVG2MnrBpZb9EtG
spring.datasource.slaver.driver-class-name=com.mysql.jdbc.Driver
2.修改注解
修改启动类
@SpringBootApplication(exclude= {DataSourceAutoConfiguration.class})
3.添加配置类
01. 数据源一
package com.example.demo.dataSource;
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.beans.factory.annotation.Value;
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 org.springframework.jdbc.datasource.DataSourceTransactionManager;
import javax.sql.DataSource;
import java.sql.SQLException;
/**
* 主数据源
*/
@Configuration
@MapperScan(
basePackages = {"com.example.demo.mapper",},
sqlSessionTemplateRef = "masterSqlSessionTemplate"
)
public class MasterDataSourceConfiguration {
@Value("${spring.datasource.primary.driver-class-name}")
private String driverClassName;
@Value("${spring.datasource.primary.jdbc-url}")
private String url;
@Value("${spring.datasource.primary.username}")
private String username;
@Value("${spring.datasource.primary.password}")
private String password;
public MasterDataSourceConfiguration() {
}
@Bean(
name = {"masterDataSource"}
)
@Primary
public DataSource dataSource() throws SQLException {
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName(this.driverClassName);
dataSource.setUrl(this.url);
dataSource.setUsername(this.username);
dataSource.setPassword(this.password);
dataSource.setInitialSize(8);
dataSource.setMinIdle(5);
// 配置监控统计拦截的filters
dataSource.setFilters("stat,wall");
return dataSource;
}
@Bean(
name = {"masterSqlSessionFactory"}
)
@Primary
public SqlSessionFactory sqlSessionFactory(@Qualifier("masterDataSource") DataSource dataSource) throws Exception {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(dataSource);
org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration();
configuration.setMapUnderscoreToCamelCase(true);
bean.setConfiguration(configuration);
bean.setMapperLocations((new PathMatchingResourcePatternResolver()).getResources("classpath*:/mapper/*.xml"));
return bean.getObject();
}
@Bean(
name = {"masterTransactionManager"}
)
@Primary
public DataSourceTransactionManager transactionManager(@Qualifier("masterDataSource") DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
@Bean(
name = {"masterSqlSessionTemplate"}
)
@Primary
public SqlSessionTemplate sqlSessionTemplate(@Qualifier("masterSqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
return new SqlSessionTemplate(sqlSessionFactory);
}
}
02.数据源二
package com.example.demo.dataSource;
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.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import javax.sql.DataSource;
/**
* 从数据源
*/
@Configuration
@MapperScan(
basePackages = {"com.example.demo.dao"},
sqlSessionTemplateRef = "slaverSqlSessionTemplate"
)
public class SlaverDataSourceConfiguration {
@Value("${spring.datasource.slaver.driver-class-name}")
private String driverClassName;
@Value("${spring.datasource.slaver.jdbc-url}")
private String url;
@Value("${spring.datasource.slaver.username}")
private String username;
@Value("${spring.datasource.slaver.password}")
private String password;
@Bean(
name = {"slaverDataSource"}
)
public DataSource dataSource() {
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName(this.driverClassName);
dataSource.setUrl(this.url);
dataSource.setUsername(this.username);
dataSource.setPassword(this.password);
return dataSource;
}
@Bean(
name = {"slaverSqlSessionFactory"}
)
public SqlSessionFactory sqlSessionFactory(@Qualifier("slaverDataSource") DataSource dataSource) throws Exception {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(dataSource);
org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration();
configuration.setMapUnderscoreToCamelCase(true);
bean.setConfiguration(configuration);
bean.setMapperLocations((new PathMatchingResourcePatternResolver()).getResources("classpath*:/mapper/slaver/*.xml"));
return bean.getObject();
}
@Bean(
name = {"slaverTransactionManager"}
)
public DataSourceTransactionManager transactionManager(@Qualifier("slaverDataSource") DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
@Bean(
name = {"slaverSqlSessionTemplate"}
)
public SqlSessionTemplate sqlSessionTemplate(@Qualifier("slaverSqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
return new SqlSessionTemplate(sqlSessionFactory);
}
}