版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m0_37625860/article/details/78912813
springBoot集成Mysql+MongoDB
因为在项目中需要用到两个不同的数据源。但是又不存在于一个DB中。让我很是苦恼,不得已只能集成多数据源。
博主文笔不好,只能讲干货了。。
目标:
使用springBoot集成mysql于MongoDB,即一个项目操作多数据源(不同DB)。
步骤一: pom依赖的导入,这一步大家就很熟悉了~
<!-- mysql begin -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.5</version>
</dependency>
<!-- mysql end -->
步骤二:配置文件的编写
server:
port: 8081
## multifl dataSource
## mysql
spring:
datasource:
driverClassName: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/db_xx?useUnicode=true&characterEncoding=utf-8
username: root
password: root
ops:
mongodb:
host: localhost
port: 27017
database: db_xx
步骤三: 配置类的编写
1.MongoMasterConfig(为什么是Master呢,嘿嘿)
@Configuration
@EnableAutoConfiguration(exclude = {MongoAutoConfiguration.class, MongoDataAutoConfiguration.class}) //必不可少
@EnableMongoRepositories(basePackages = {"com.xx.mapper.mongodb"},mongoTemplateRef = "demo1MongoTemplate") //配置接口信息
@ComponentScan
@ConfigurationProperties(prefix = "ops.mongodb")// 从配置文件中获取数据
public class MongoMasterConfig extends AbstractMongoConfigure {
@Override
@Bean(name = "demo1MongoTemplate")
@Primary
public MongoTemplate getMongoTemplate() throws Exception {
return new MongoTemplate(mongoDbFactory());
}
}
2.MysqlDataSourceConfig
@Configuration
@MapperScan(basePackages = MysqlDataSourceConfig.PACKAGE,sqlSessionFactoryRef = "sqlSessionFactory")
@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class})
public class MysqlDataSourceConfig {
//精确定位Mapper接口到master目录,以便与其他数据隔离
static final String PACKAGE = "com.xx.mapper.mysql";
static final String MAPPER_LOCATION = "classpath*:mapper/*.xml";
@Value("${spring.datasource.url}")
private String url;
@Value("${spring.datasource.driverClassName}")
private String driverClass;
@Value("${spring.datasource.username}")
private String userName;
@Value("${spring.datasource.password}")
private String password;
/**
* 创建数据源
* @return
*/
@Bean(name = "dataSource")
@Primary
public DataSource masterDataSource(){
//实例化阿里数据源
DruidDataSource druidDataSource = new DruidDataSource();
druidDataSource.setUrl("jdbc:mysql://localhost:3306/db_xx");
druidDataSource.setDriverClassName("com.mysql.jdbc.Driver");
druidDataSource.setUsername("root");
druidDataSource.setPassword("root");
return druidDataSource;
}
/**
* 事务
* @return
*/
@Bean(name = "transactionManager")
public DataSourceTransactionManager masterTransactionManager(){
return new DataSourceTransactionManager(masterDataSource());
}
/*创建SqlSessionFactory
*/
@Bean(name = "sqlSessionFactory")
public SqlSessionFactory masterSqlSessionFactory(@Qualifier("dataSource") DataSource masterDataSource) throws Exception {
final SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(masterDataSource);
sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver()//
.getResources(MysqlDataSourceConfig.MAPPER_LOCATION));
return sqlSessionFactoryBean.getObject();
}
到此为止~,你的项目已经配置好了多数据源(不同DB),使用时,就像以前一样。。。