配置文件 application.yml primary
second
datasource:
primary:
driver-class-name: com.mysql.cj.jdbc.Driver
# 连接地址
jdbc-url: jdbc:mysql://localhost:3307/mp?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
# 用户名
username: abc
# 密码
password: 123456
type: com.zaxxer.hikari.HikariDataSource
# 最大连接池数量
maxPoolSize: 20
# 最小空闲线程数量
minIdle: 10
# 配置获取连接等待超时的时间
connectionTimeout: 30000
# 校验超时时间
validationTimeout: 5000
# 空闲连接存活最大时间,默认10分钟
idleTimeout: 600000
# 此属性控制池中连接的最长生命周期,值0表示无限生命周期,默认30分钟
maxLifetime: 1800000
# 连接测试query(配置检测连接是否有效)
connectionTestQuery: SELECT 1
# 多久检查一次连接的活性
keepaliveTime: 30000
secondary:
# 数据库连接使用 jdbc
driver-class-name: com.mysql.cj.jdbc.Driver
# 连接地址
jdbc-url: jdbc:mysql://localhost:3307/film_user?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
# 用户名
username: abc
# 密码
password: 123456
type: com.zaxxer.hikari.HikariDataSource
# 最大连接池数量
maxPoolSize: 20
# 最小空闲线程数量
minIdle: 10
# 配置获取连接等待超时的时间
connectionTimeout: 30000
# 校验超时时间
validationTimeout: 5000
# 空闲连接存活最大时间,默认10分钟
idleTimeout: 600000
# 此属性控制池中连接的最长生命周期,值0表示无限生命周期,默认30分钟
maxLifetime: 1800000
# 连接测试query(配置检测连接是否有效)
connectionTestQuery: SELECT 1
# 多久检查一次连接的活性
keepaliveTime: 30000
MybatisConfigOne.java 关键配置1: sessionFactory.setMapperLocations(resolver.getResources("classpath:mapper/**/*Mapper.xml"));
关键配置2: @MapperScan(basePackages = "com.chuxin.demotodolist.mapper.one", sqlSessionFactoryRef = "sqlSessionFactoryOne")
@Configuration
@MapperScan(basePackages = "com.chuxin.demotodolist.mapper.one", sqlSessionFactoryRef = "sqlSessionFactoryOne")
public class MybatisConfigOne {
@Bean(name = "primaryDataSource")
@ConfigurationProperties(prefix = "spring.datasource.primary")
@Primary
public DataSource primaryDataSource() {
return DataSourceBuilder.create().build();
}
@Primary
@Bean("masterDataSourceTransactionManager")
public DataSourceTransactionManager masterDataSourceTransactionManager(@Qualifier("primaryDataSource") DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
@Bean(name = "sqlSessionFactoryOne")
@Primary
public SqlSessionFactory sqlSessionFactoryOne() throws Exception {
SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(primaryDataSource());
// 设置mybatis的主配置文件
ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
sessionFactory.setMapperLocations(resolver.getResources("classpath:mapper/**/*Mapper.xml"));
return sessionFactory.getObject();
}
}
MybatisConfigTwo.java
关键配置1:
sessionFactory.setMapperLocations(resolver.getResources("classpath:mapper/**/*Mapper.xml"));
关键配置2: @MapperScan(basePackages = "com.chuxin.demotodolist.mapper.two", sqlSessionFactoryRef = "sqlSessionFactoryTwo")
@Configuration
@MapperScan(basePackages = "com.chuxin.demotodolist.mapper.two", sqlSessionFactoryRef = "sqlSessionFactoryTwo")
public class MyBatisConfigTwo {
@Bean(name = "secondaryDataSource")
@ConfigurationProperties(prefix = "spring.datasource.secondary")
public DataSource secondaryDataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "sqlSessionFactoryTwo")
public SqlSessionFactory sqlSessionFactoryTwo() throws Exception {
SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(secondaryDataSource());
// 设置mybatis的主配置文件
ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
sessionFactory.setMapperLocations(resolver.getResources("classpath:mapper/**/*Mapper.xml"));
return sessionFactory.getObject();
}
}
mapper/one 目录下存放数据库1的 java 文件 mapper/two 目录下存放数据库2的 java 文件
第一次写文章,请多多指教。