java 多数据源配置
2022/2/13 17:19:34
本文主要是介绍java 多数据源配置,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
多数据源
一、依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>dynamic-datasource-spring-boot-starter</artifactId> <version>3.2.1</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jdbc</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>com.microsoft.sqlserver</groupId> <artifactId>mssql-jdbc</artifactId> <scope>runtime</scope> </dependency> <!--mybatis-plus 依赖--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.3.1.tmp</version> </dependency>
二、yml数据库配置
spring: datasource: dynamic: primary: db233 datasource: db233: jdbc-url: jdbc:sqlserver://120.0.0.1:1433;database=db1 username: sa password: 123456 driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver hikari: maximum-pool-size: 12 minimum-idle: 5 idle-timeout: 300000 connection-timeout: 20000 connection-test-query: select 1 db231: jdbc-url: jdbc:sqlserver://120.0.0.1:1433;database=db2 username: sa password: 123456 driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver hikari: maximum-pool-size: 12 minimum-idle: 5 idle-timeout: 300000 connection-timeout: 20000 connection-test-query: select 1 db231e: jdbc-url: jdbc:sqlserver://120.0.0.1:1433;database=db3 username: sa password: 123456 driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver hikari: maximum-pool-size: 12 minimum-idle: 5 idle-timeout: 300000 connection-timeout: 20000 connection-test-query: select 1 durid: initial-size: 1 max-active: 20 min-idle: 1 max-wait: 60000
三、配置文件
@Configuration @MapperScan(basePackages = "com.xxxx.mapper.db231", sqlSessionFactoryRef = "db231SqlSessionFactory") public class Db231DataSourceConfig { @Bean("db231DataSource") @ConfigurationProperties(prefix = "spring.datasource.dynamic.datasource.db231") public DataSource db231DataSource() { return DataSourceBuilder.create().build(); } @Bean("db231SqlSessionFactory") public SqlSessionFactory db231SqlSessionFactory(@Qualifier("db231DataSource") DataSource dataSource) throws Exception { SqlSessionFactoryBean bean = new SqlSessionFactoryBean(); bean.setDataSource(dataSource); bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:mapper/db231/*.xml")); return bean.getObject(); } @Bean("db231SqlSessionTemplate") public SqlSessionTemplate db231SqlSessionTemplate(@Qualifier("db231SqlSessionFactory") SqlSessionFactory sqlSessionFactory) { return new SqlSessionTemplate(sqlSessionFactory); } @Bean(name = "db231SqlSessionManager") public DataSourceTransactionManager db231SqlSessionManager() { return new DataSourceTransactionManager(db231DataSource()); } }
@Configuration @MapperScan(basePackages = "com.xxxx.mapper.db231e", sqlSessionFactoryRef = "db231eSqlSessionFactory") public class Db231eDataSourceConfig { @Bean("db231eDataSource") @ConfigurationProperties(prefix = "spring.datasource.dynamic.datasource.db231e") public DataSource db231eDataSource() { return DataSourceBuilder.create().build(); } @Bean("db231eSqlSessionFactory") public SqlSessionFactory db231eSqlSessionFactory(@Qualifier("db231eDataSource") DataSource dataSource) throws Exception { SqlSessionFactoryBean bean = new SqlSessionFactoryBean(); bean.setDataSource(dataSource); bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:mapper/db231e/*.xml")); return bean.getObject(); } @Bean("db231eSqlSessionTemplate") public SqlSessionTemplate db231eSqlSessionTemplate(@Qualifier("db231eSqlSessionFactory") SqlSessionFactory sqlSessionFactory) { return new SqlSessionTemplate(sqlSessionFactory); } @Bean(name = "db231eSqlSessionManager") public DataSourceTransactionManager db231eSqlSessionManager() { return new DataSourceTransactionManager(db231eDataSource()); } }
@Configuration @MapperScan(basePackages = "com.xxxx.mapper.db233", sqlSessionFactoryRef = "db233SqlSessionFactory") public class Db233DataSourceConfig { @Primary @Bean("db233DataSource") @ConfigurationProperties(prefix = "spring.datasource.dynamic.datasource.db233") //读取application.yml中的配置参数映射成为一个对象 public DataSource db233DataSource(){ return DataSourceBuilder.create().build(); } @Primary @Bean("db233SqlSessionFactory") public SqlSessionFactory db233SqlSessionFactory(@Qualifier("db233DataSource") DataSource dataSource) throws Exception { SqlSessionFactoryBean bean = new SqlSessionFactoryBean(); bean.setDataSource(dataSource); // mapper的xml形式文件位置必须要配置,不然将报错:no statement (这种错误也可能是mapper的xml中,namespace与项目的路径不一致导致) bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:mapper/db233/*.xml")); return bean.getObject(); } @Primary @Bean("db233SqlSessionTemplate") public SqlSessionTemplate db233SqlSessionTemplate(@Qualifier("db233SqlSessionFactory") SqlSessionFactory sqlSessionFactory){ return new SqlSessionTemplate(sqlSessionFactory); } @Primary @Bean(name = "db233SqlSessionManager") public DataSourceTransactionManager db233SqlSessionManager() { return new DataSourceTransactionManager(db233DataSource()); } }
这篇关于java 多数据源配置的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-26结对编程到底难不难?答案在这里
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)