我们平时肯定有很多需要用到多个数据库的需求(在一个项目里面)
那么就得配置一下多个数据源,在springboot很是方便,在配置文件里面加配置和创建一个配置信息类就好了
在application.properties
# test1
test1.spring.datasource.jdbcUrl=jdbc:mysql://127.0.0.1:3306/test1?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false
test1.spring.datasource.driverClassName = com.mysql.cj.jdbc.Driver
test1.spring.datasource.username=test1
test1.spring.datasource.password=test1
# test2
test2.spring.datasource.jdbcUrl=jdbc:mysql://127.0.0.1:3306/test2?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false
test2.spring.datasource.driverClassName = com.mysql.cj.jdbc.Driver
test2.spring.datasource.username=test2
test2.spring.datasource.password=test2
OrgDataSourceConfig 一个数据源一个config
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
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.demo1.mapper.test1",sqlSessionFactoryRef = "orgSqlSessionFactory")
public class OrgDataSourceConfig {
@Primary
@Bean(name = "orgDataSource")
@ConfigurationProperties("test1.spring.datasource")
public DataSource masterDataSource(){
return DataSourceBuilder.create().build();
}
@Bean(name = "orgSqlSessionFactory")
public SqlSessionFactory sqlSessionFactory(@Qualifier("orgDataSource") DataSource dataSource) throws Exception {
SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean();
sessionFactoryBean.setDataSource(dataSource);
sessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver()
.getResources("classpath:sqlmapper/test1/*.xml"));
return sessionFactoryBean.getObject();
}
}
启动类加上注解
//EnableAutoConfiguration注解,关闭springBoot关于mybatis的一些自动注入
@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class,DataSourceTransactionManagerAutoConfiguration.class, MybatisAutoConfiguration.class})
//加入定时器
@EnableScheduling
@SpringBootApplication
public class DataTransGsiotApplication {
public static void main(String[] args) {
SpringApplication.run(DataTransGsiotApplication.class, args);
}
}