目录
- springboot项目配置多数据源
- 1. 配置多个数据源
- 2. 创建数据源配置类
- 3. 配置事务管理器
- 4. 使用不同的Mapper
- 总结
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://localhojsst: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: 123456
2. 创建数据源配置类
对于每个数据源,你需要创建一个配置类来定义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 db1SqandroidlSessionFactory(@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.setMapperLoc编程客栈ations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/db2/*.xml")); http://www.devze.com return sessionFactory.getObject(); } }
3. 配置事务管理器
对于每个数据源,你还需要配置相应的事务管理器:
@Bean(name = "db1TransactionManager") public DataSourceTransactionManager db1TransactionManager(@Qualifier("db1DataSource") DataSource dataSource) { return new DataSourceTransactionManager(dataSource); } @Bean(nameandroid = "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,并实现跨数据库操作了。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。
精彩评论