springboot项目如何配置多数据源
springboot项目配置多数据源
1. 配置多个数据源
首先,你需要在application.yml或application.properties中配置多个数据源。
例如:
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
one:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/db1?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
username: xxs
password: 123456
two:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/db2?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
username: xxs
password: 1234562. 创建数据源配置类
对于每个数据源,你需要创建一个配置类来定义DataSource、SqlSessionFactory和MapperScan。
例如:
@Configuration
@MapperScan(basePackages = "com.xxs.mapper.db1", sqlSessionFactoryRef = "db1SqlSessionFactory")
public class DataSourceOneConfig {
@Bean(name = "db1DataSource")
@ConfigurationProperties(prefix = "spring.datasource.one")
public DataSource db1DataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "db1SqlSessionFactory")
public SqlSessionFactory db1SqlSessionFactory(@Qualifier("db1DataSource") DataSource dataSource) throws Exception {
SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource);
sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/db1/*.xml"));
return sessionFactory.getObject();
}
}对于第二个数据源,创建另一个配置类:
@Configuration
@MapperScan(basePackages = "com.xxs.mapper.db2", sqlSessionFactoryRef = "db2SqlSessionFactory")
public class DataSourceTwoConfig {
@Bean(name = "db2DataSource")
@ConfigurationProperties(prefix = "spring.datasource.two")
public DataSource db2DataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "db2SqlSessionFactory")
public SqlSessionFactory db2SqlSessionFactory(@Qualifier("db2DataSource") DataSource dataSource) throws Exception {
SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource);
sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/db2/*.xml"));
return sessionFactory.getObject();
}
}3. 配置事务管理器
对于每个数据源,你还需要配置相应的事务管理器:
@Bean(name = "db1TransactionManager")
public DataSourceTransactionManager db1TransactionManager(@Qualifier("db1DataSource") DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
@Bean(name = "db2TransactionManager")
public DataSourceTransactionManager db2TransactionManager(@Qualifier("db2DataSource") DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}4. 使用不同的Mapper
现在你可以在不同的包路径下创建对应的Mapper接口,并在对应的Mapper XML文件中编写SQL语句。
例如,com.xxs.mapper.db1包下的Mapper接口将使用第一个数据源,而com.xxs.mapper.db2包下的Mapper接口将使用第二个数据源。
这样,你就可以在Spring Boot项目中配置不同数据库的Mapper,并实现跨数据库操作了。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
Java获取年月日(格式:xxxx年xx月xx日)的方法详解
在开发应用程序时,经常需要获取当前的年、月、日,并以特定格式进行展示或处理,本文将介绍如何获取年月日,并将其格式化为“xxxx年xx月xx日”的形式,帮助你在应用程序中处理日期信息,需要的朋友可以参考下2023-10-10
SpringCloud openfeign相互调用实现方法介绍
在springcloud中,openfeign是取代了feign作为负载均衡组件的,feign最早是netflix提供的,他是一个轻量级的支持RESTful的http服务调用框架,内置了ribbon,而ribbon可以提供负载均衡机制,因此feign可以作为一个负载均衡的远程服务调用框架使用2022-11-11
spring中JdbcTemplate操作oracle的存储过程实例代码
JdbcTemplate是Spring对JDBC的封装,目的是使JDBC更加易于使用,JdbcTemplate是Spring的一部分,下面这篇文章主要给大家介绍了关于spring中JdbcTemplate操作oracle的存储过程的相关资料,需要的朋友可以参考下2023-04-04


最新评论