如果要连接两个数据源,首先需要设置主次数据源
注意 下面的是 jdbc-url
datasource:
wind:
jdbc-url: jdbc:postgresql://11.112.118.100:18610/wind
username: 111
password: 111
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: org.postgresql.Driver
druid:
initial-size: 10 #初始化连接大小
min-idle: 10 #最小空闲连接数
max-active: 100 #最大连接数
query-timeout: 6000 #查询超时时间
transaction-query-timeout: 6000 #事务查询超时时间
remove-abandoned-timeout: 1800 #关闭空闲连接超时时间
filter-class-names: stat
filters: stat,config
timeBetweenEvictionRunsMills: 6000 #配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
minEvictableIdleTimeMillis: 30000 #配置一个连接在池中最小生存的时间,单位是毫秒
bs:
jdbc-url: jdbc:postgresql://1.112.118.210:18119/bs
username: p11s
password: s111mcz
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: org.postgresql.Driver
druid:
initial-size: 10 #初始化连接大小
min-idle: 10 #最小空闲连接数
max-active: 100 #最大连接数
query-timeout: 6000 #查询超时时间
transaction-query-timeout: 6000 #事务查询超时时间
remove-abandoned-timeout: 1800 #关闭空闲连接超时时间
filter-class-names: stat
filters: stat,config
timeBetweenEvictionRunsMills: 6000 #配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
minEvictableIdleTimeMillis: 30000 #配置一个连接在池中最小生存的时间,单位是毫秒
内容为:
主数据源
package com.aa.common.config;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
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 org.springframework.jdbc.datasource.DataSourceTransactionManager;
import tk.mybatis.spring.annotation.MapperScan;
import javax.sql.DataSource;
/**
* @Author: aaa
* @Date: 2020/9/16 9:47
*
*/
@Configuration
@MapperScan(basePackages = "com.aaa.persistence.dao.wind", sqlSessionTemplateRef = "windSqlSessionTemplate")
public class WindDataSourceConfig {
/**
* 自动装配时当出现多个Bean候选者时,被注解为@Primary的Bean将作为首选者,否则将抛出异常
* @return DataSource
*/
@Primary
@Bean(name = "windDataSource")
@ConfigurationProperties(prefix = "spring.datasource.wind")
public DataSource windDataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "windSqlSessionFactory")
@Primary
public SqlSessionFactory windSqlSessionFactory(@Qualifier("windDataSource") DataSource dataSource) throws Exception {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(dataSource);
bean.setMapperLocations(
new PathMatchingResourcePatternResolver().getResources("classpath*:mapper/*.xml"));
return bean.getObject();
}
//事务管理
@Bean(name = "windTransactionManager")
@Primary
public DataSourceTransactionManager windTransactionManager(@Qualifier("windDataSource") DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
//会话管理
@Bean(name = "windSqlSessionTemplate")
@Primary
public SqlSessionTemplate windSqlSessionTemplate(@Qualifier("windSqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
return new SqlSessionTemplate(sqlSessionFactory);
}
}
另外一个 去掉@Primary
@MapperScan(basePackages = 路径变一下
@ConfigurationProperties(prefix = "spring.datasource.ds") 变一下 prefix 里是yml 数据库配置
mybatis-plus的话
- SqlSessionFactoryBean需要改成MybatisSqlSessionFactoryBean,否则baseMapper自带的方法不能访问,但能访问*Mapper.xml中定义的方法或者接口注解的自定义sql的方法
------------------------------------方法二----------------------------------------------------
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.2</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>3.3.2</version>
</dependency>
@MapperScan(basePackages = "com.aa.aaaa.dao.mapper")
public class aaServiceApplication {
public static void main(String[] args) {
SpringApplication.run(aaServiceApplication.class, args);
}
}
spring:
datasource:
type: com.zaxxer.hikari.HikariDataSource
hikari:
pool-name: bbbHikariCP
minimum-idle: 10
maximum-pool-size: 10
idle-timeout: 30000
validation-timeout: 3000
connection-timeout: 30000
max-lifetime: 1800000
connection-test-query: SELECT 1
dynamic:
primary: ssss
datasource:
ssss:
driver-class-name: org.postgresql.Driver
url: jdbc:postgresql://23.23.123.1235:18239/aa
username: postgres
password: sdfasdfad
ss-mysql:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://423.123.123.123:523/sdfds?allowPublicKeyRetrieval=true&useSSL=false&autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false
username: root
password: root
@Mapper
@DS("sss-mysql")
public interface sdfoMapper extends BaseMapper<sdfasdf> {
}