The content of this article is about the method of configuring two data sources in the springboot project. It has certain reference value. Friends in need can refer to it. I hope it will be helpful to you.
This article mainly introduces how to configure two data sources (mysql and oracle) in a springboot project;
1. Introducing related dependencies
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <!--oracle 驱动 --> <dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc6</artifactId> <version>11.1.0.7.0</version> </dependency>
When the ojdbc driver package version is too low, an error will be reported as shown below, that is, the driver jar is incompatible with the database version:
##2. Configure data source connection parameters in applicationContext.yml:Spring: datasource: base: driver-class-name: com.mysql.jdbc.Driver jdbc-url: ${base.db.url} username: ${base.db.username} password: ${base.db.password} oa: driver-class-name: oracle.jdbc.driver.OracleDriver jdbc-url: ${oa.db.urL} username: ${oa.db.username} password: ${oa.db.password} hikari: max-lifetime: 60000 login-timeout: 5 validation-timeout: 3000 connection-timeout: 60000 idle-timeout: 60000
Package com.**.config; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.jdbc.DataSourceBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; import javax.sql.DataSource; public class MultiDataSourceConfig { @Bean (name = "primaryDataSource") @Qualifier("primaryDataSource") @Primary //定义主数据源 @ConfigurationProperties (prefix = "spring.datasource.Base") public DataSource primaryDataSource () { return DataSourceBuilder.create().build (); } @Bean (name = "secondaryDataSource") @Qualifier ("secondaryDataSource") @ConfigurationProperties (prefix = "spring.datasource.oa") public DataSource secondaryDataSource () { return DataSourceBuilder.create().build (); } }
Package com.**.config; import org.apache.ibatis.session.SqlSessionFactory; import org.mybatis.spring.SqLSessionFactoryBean; import org.mybatis.spring.SqLSessionTemplate; import org.mybatis.spring.annotation.MapperScan; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; import org.springframeworkcore.io.support.PathMatchingResourcePatternResolver; import org.spr ingframework.jdbc.datasource.DataSourceTransactionManager; import org.springframework.transaction.PlatformTransactionManager; import javax.sql.DataSource; @Configuration @MapperScan (basePackages = "com.**.mapper", sqlSessionTemplateRef = "primarySqlSessionTemplate") public class SqlSessionTemplate1 { @Bean (name = "primarySqlSessionFactory") @Primary public SqlSessionFactory primarySqlSessionFactory (@Qualifier("primaryDataSource") DataSource dataSource) throws Exception{ SqLSessionFactoryBean bean = new SqlSessionFactoryBean (); bean.setDataSource (dataSource); bean.setMapperLocations (new PathMatchingResourcePatternResolver().getResources (locationPattern: "classpath: mybatis/mapper/*. XmL")); return bean.getObject(); } /** * 配置声明式事务管理器 */ @Bean (name = "primaryTransactionManager") @Primary public PlatformTransactionManager primaryTransactionManager (@Qualifier("primaryDataSource") DataSource dataSource) { return new DataSourceTransactionManager (dataSource); } @Bean (name = "primarySqlSessionTemplate") @Primary public SqlSessionTemplatel primarySqlSessionTemplate(@Qualifier("primarySqlSesionFactory") SqlSessionFactory sqlSessionFactory) throws Exception { return new SqlSessionTemplatel(sqlSessionFactory); } }
Package com.**.config; import org.apache.ibatis.session.SqlSessionFactory; import org.mybatis.spring.SqLSessionFactoryBean; import org.mybatis.spring.SqLSessionTemplate; import org.mybatis.spring.annotation.MapperScan; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.secondary; import org.springframeworkcore.io.support.PathMatchingResourcePatternResolver; import org.spr ingframework.jdbc.datasource.DataSourceTransactionManager; import org.springframework.transaction.PlatformTransactionManager; import javax.sql.DataSource; @Configuration @MapperScan (basePackages = "com.**.oraclemapper", sqlSessionTemplateRef = "secondarySqlSessionTemplate") public class SqlSessionTemplate2 { @Bean (name = "secondarySqlSessionFactory") public SqlSessionFactory secondarySqlSessionFactory (@Qualifier("secondaryDataSource") DataSource dataSource) throws Exception{ SqLSessionFactoryBean bean = new SqlSessionFactoryBean (); bean.setDataSource (dataSource); bean.setMapperLocations (new PathMatchingResourcePatternResolver().getResources (locationPattern: "classpath: mybatis/oraclemapper/*. XmL")); return bean.getObject(); } /** * 配置声明式事务管理器 */ @Bean (name = "secondaryTransactionManager") public PlatformTransactionManager secondaryTransactionManager (@Qualifier("secondaryDataSource") DataSource dataSource) { return new DataSourceTransactionManager (dataSource); } @Bean (name = "secondarySqlSessionTemplate") public SqlSessionTemplatel secondarySqlSessionTemplate(@Qualifier("secondarySqlSesionFactory") SqlSessionFactory sqlSessionFactory) throws Exception { return new SqlSessionTemplatel(sqlSessionFactory); } }
The above is the detailed content of How to configure two data sources in springboot project. For more information, please follow other related articles on the PHP Chinese website!