SpringBoot配置JDBC、MyBatis多数据源
项目结构MyBatis多数据源配置文件配置类测试类
JDBC多数据源配置文件配置类多数据源配置JDBC配置类
测试类
项目结构
MyBatis多数据源
配置文件
spring:
datasource:
hikari:
ds1:
driver-class-name: com.mysql.cj.jdbc.Driver
jdbc-url: jdbc
:mysql
://127.0.0.1
:3306/QCDepartment
?useUnicode=true
&characterEncoding=utf8
&serverTimezone=Asia/Shanghai
username: root
password: huafeng
ds2:
driver-class-name: com.mysql.cj.jdbc.Driver
jdbc-url: jdbc
:mysql
://127.0.0.1
:3306/spring_boot
?useUnicode=true
&characterEncoding=utf8
&serverTimezone=Asia/Shanghai
username: root
password: huafeng
配置类
@Configuration
@MapperScan(basePackages
= "com.luckytiger.multi.data.source.mapper1", sqlSessionTemplateRef
= "db1SqlSessionTemplate")
public class MyBatis1DataSourceConfig {
@Bean(name
= "db1DataSource")
@ConfigurationProperties(prefix
= "spring.datasource.hikari.ds1")
@Primary
public DataSource
testDataSource() {
return DataSourceBuilder
.create().build();
}
@Bean(name
= "db1SqlSessionFactory")
@Primary
public SqlSessionFactory
testSqlSessionFactory(@Qualifier("db1DataSource") DataSource dataSource
) throws Exception
{
SqlSessionFactoryBean bean
= new SqlSessionFactoryBean();
bean
.setDataSource(dataSource
);
return bean
.getObject();
}
/**
* 配置事务管理
*/
@Bean(name
= "db1TransactionManager")
@Primary
public DataSourceTransactionManager
testTransactionManager(@Qualifier("db1DataSource") DataSource dataSource
) {
return new DataSourceTransactionManager(dataSource
);
}
@Bean(name
= "db1SqlSessionTemplate")
@Primary
public SqlSessionTemplate
testSqlSessionTemplate(@Qualifier("db1SqlSessionFactory") SqlSessionFactory sqlSessionFactory
) throws Exception
{
return new SqlSessionTemplate(sqlSessionFactory
);
}
}
测试类
@Autowired
private RemindEventsMapper remindEventsMapper
;
@Autowired
private SecUserMapper secUserMapper
;
@Test
void mybatis1(){
RemindEvents load
= remindEventsMapper
.load(1);
System
.out
.println(load
);
}
@Test
void mybatis2(){
SecUser load
= secUserMapper
.load(1);
System
.out
.println(load
);
}
JDBC多数据源
配置文件
spring:
datasource:
ds1:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc
:mysql
://101.37.76.243
:3306/QCDepartment
?useUnicode=true
&characterEncoding=utf8
&serverTimezone=Asia/Shanghai
username: root
password: huafeng
ds2:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc
:mysql
://101.37.76.243
:3306/spring_boot
?useUnicode=true
&characterEncoding=utf8
&serverTimezone=Asia/Shanghai
username: root
password: huafeng
配置类
多数据源配置
@Configuration
public class DataSourceConfig {
@Primary
@Bean(name
= "ds1DataSourceProperties")
@ConfigurationProperties(prefix
= "spring.datasource.ds1")
public DataSourceProperties
ds1DataSourceProperties() {
return new DataSourceProperties();
}
@Primary
@Bean(name
= "ds1DataSource")
public DataSource
ds1DataSource(@Qualifier("ds1DataSourceProperties") DataSourceProperties dataSourceProperties
) {
return dataSourceProperties
.initializeDataSourceBuilder().build();
}
@Bean(name
= "ds2DataSourceProperties")
@ConfigurationProperties(prefix
= "spring.datasource.ds2")
public DataSourceProperties
ds2DataSourceProperties() {
return new DataSourceProperties();
}
@Bean("ds2DataSource")
public DataSource
ds2DataSource(@Qualifier("ds2DataSourceProperties") DataSourceProperties dataSourceProperties
) {
return dataSourceProperties
.initializeDataSourceBuilder().build();
}
}
JDBC配置类
@Configuration
public class JdbcTemplateDataSourceConfig {
@Primary
@Bean(name
= "ds1JdbcTemplate")
public JdbcTemplate
ds1JdbcTemplate(@Qualifier("ds1DataSource") DataSource dataSource
) {
return new JdbcTemplate(dataSource
);
}
@Bean(name
= "ds2JdbcTemplate")
public JdbcTemplate
ds2JdbcTemplate(@Qualifier("ds2DataSource") DataSource dataSource
) {
return new JdbcTemplate(dataSource
);
}
}
测试类
@Autowired
@Qualifier("ds1JdbcTemplate")
private JdbcTemplate template1
;
@Autowired
@Qualifier("ds2JdbcTemplate")
private JdbcTemplate template2
;
@Test
void contextLoads() {
BeanPropertyRowMapper
<RemindEvents> rowMapper
= new BeanPropertyRowMapper<>(RemindEvents
.class);
RemindEvents remindEvents
= template1
.queryForObject("select * from remind_events where id = ?", rowMapper
, 1);
System
.out
.println(remindEvents
);
}
@Test
void context(){
BeanPropertyRowMapper
<SecUser> rowMapper
= new BeanPropertyRowMapper<>(SecUser
.class);
SecUser secUser
= template2
.queryForObject("select * from sec_user where id = ?", rowMapper
, 1);
System
.out
.println(secUser
);
}