就是现在我的项目中只连接了一个数据就是本地数据库,如何实现连接两个数据库,主数据库为本地数据库,副数据库为192.168.1.123上面的数据库,就是当我登录的时候访问的是我的主数据库,在我查询的时候数据有可能从我的副数据库中得到
设置主从库
@Configuration
public class DataSourceConfig {
@Bean(name = "dbOneDataSource")
@Primary
// application.yml 中对应db对应公司自有空气网格系统数据库
@ConfigurationProperties(prefix = "spring.db1")
public DataSource dbOneDataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "dbTwoDataSource")
// application.yml 中对应数据库1
@ConfigurationProperties(prefix = "spring.db2")
public DataSource dbTwoDataSource() {
return DataSourceBuilder.create().build();
}
//@Bean(name = "dbThreeDataSource")
// application.yml 中对应 数据库2
//@ConfigurationProperties(prefix = "spring.db3")
/*public DataSource dbThreeDataSource() {
return DataSourceBuilder.create().build();
}*/
}
编写MybatisConfig
```java
/**
* 第一个数据库 SqlSessionFactory && SqlSessionTemplate 创建
*/
@Configuration
//绑定数据源对应的mapper[第一个使用]
@MapperScan(basePackages = {"com.hqkj.httpdemo.demo.one.mapper"},
sqlSessionFactoryRef = "sqlSessionFactoryOne",
sqlSessionTemplateRef = "sqlSessionTemplateOne")
public static class DBOne{
@Resource
DataSource dbOneDataSource;
@Bean
@Primary
public SqlSessionFactory sqlSessionFactoryOne() throws Exception {
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
factoryBean.setDataSource(dbOneDataSource);
return factoryBean.getObject();
}
@Bean
@Primary
public SqlSessionTemplate sqlSessionTemplateOne() throws Exception {
SqlSessionTemplate template = new SqlSessionTemplate(sqlSessionFactoryOne());
return template;
}
}
```java
/**
* 第二个数据库 SqlSessionFactory && SqlSessionTemplate 创建
*/
@Configuration
//数据原绑定对应的maper[第二个使用]
@MapperScan(basePackages = {"com.hqkj.httpdemo.demo.two.mapper"},
sqlSessionFactoryRef = "sqlSessionFactoryTwo",
sqlSessionTemplateRef ="sqlSessionTemplateTwo" )
public static class DBTwo{
@Resource
DataSource dbTwoDataSource;
@Bean
public SqlSessionFactory sqlSessionFactoryTwo() throws Exception {
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
factoryBean.setDataSource(dbTwoDataSource);
return factoryBean.getObject();
}
@Bean
public SqlSessionTemplate sqlSessionTemplateTwo() throws Exception {
SqlSessionTemplate template = new SqlSessionTemplate(sqlSessionFactoryTwo());
return template;
}
}
搜下关键词 spring-boot 多数据源
吧,这块内容比较多
想自己造轮子可以看下我之前的博文 https://blog.csdn.net/white_bird_shit/article/details/109496861
不想造有写好的轮子 开箱即用 https://gitee.com/baomidou/dynamic-datasource-spring-boot-starter
```yaml
spring:
datasource:
dynamic:
datasource:
master:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=Asia/Shanghai
username: root
password: root
slave:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://192.168.1.123:3306/test?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=Asia/Shanghai
username: root
password: root
primary: master
```xml
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>3.4.1</version>
</dependency>
@DS("master")
@Mapper
public interface ProfitsMapper extends BaseMapper<ProfitsEntity> {
@DS 里面写master 或者salve就会调用不同服务器的数据库