Le contenu de cet article concerne la méthode de configuration de deux sources de données dans le projet springboot. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.
Cet article présente principalement comment configurer deux sources de données (mysql et oracle) dans un projet springboot
1. Présentation des dépendances associées
<!-- 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>
Lorsque la version du package de pilotes ojdbc est trop basse, une erreur sera signalée comme indiqué ci-dessous, c'est-à-dire que le fichier jar du pilote est incompatible avec la version de la base de données :
2. Configurez les paramètres de connexion à la source de données dans 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
3. Plusieurs fichiers de configuration de source de données, lisez les paramètres de connexion correspondants
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 (); } }
3. Configuration de la source de données principale, spécifiez l'analyse du fichier mappeur correspondant et du fichier xml correspondant. sous le package mapper, la session SQL correspondante sera automatiquement utilisée
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); } }
4. La deuxième configuration de la source de données spécifie l'analyse du fichier mapper correspondant et du fichier mapper correspondant. fichier XML correspondant. Lors de l'utilisation du fichier mapper sous le package mapper, il utilisera automatiquement la session SQL correspondante
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); } }
À ce stade, la couche de service peut être utilisé comme une source de données unique.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!