Récemment, en raison des besoins du projet, différentes bases de données doivent être accessibles simultanément dans le programme. C'était vraiment pratique et rapide d'utiliser les annotations springboot pour écrire du code auparavant, mais si vous devez en modifier certaines pour faciliter votre propre utilisation, c'est un peu ennuyeux et je ne sais pas par où commencer. Écrivez ceci.
Le premier est pom.xml, qui est courant et ne sera pas publié ici.
La seconde est la configuration application.properties En raison d'environnements différents, l'auteur a créé deux nouveaux fichiers de configuration application-dev.properties et application-pro.properties.
application.properties : Précisez la configuration de l'environnement actuellement utilisé
spring.profiles.active=dev
application-dev.properties的配置(application-pro.properties类似dev的配置)
#datasource1 spring.datasource.username=** spring.datasource.password=***** spring.datasource.jdbc-url=jdbc:mysql://*************** useUnicode=true&characterEncoding=utf-8&useSSL=false spring.datasource.driver-class-name=com.mysql.jdbc.Driver #datasource2 spring.datasource.ds1.username=*** spring.datasource.ds1.password=****** spring.datasource.ds1.jdbc-url=jdbc:mysql://*************** useUnicode=true&characterEncoding=utf-8&useSSL=false spring.datasource.ds1.driver-class-name=com.mysql.jdbc.Drive
MyBatis (Config1) des différentes sources de données
@Configuration @MapperScan(basePackages = "com.pet.petgame2.mapper.dao", sqlSessionFactoryRef = "petgame2SessionFactory") public class Config1 { @Bean(name = "petgame2") @ConfigurationProperties(prefix = "spring.datasource") @Primary public DataSource dataSource(){ return DataSourceBuilder.create().build(); } @Bean(name = "petgame2SessionFactory") @Primary public SqlSessionFactory sessionFactory(@Qualifier("petgame2") DataSource dataSource) throws Exception{ SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean(); factoryBean.setDataSource(dataSource); factoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:Mapper/pet2Mapper/*.xml")); return factoryBean.getObject(); } @Bean(name = "petgame2TransactionManager") @Primary public DataSourceTransactionManager transactionManager(@Qualifier("petgame2") DataSource dataSource){ return new DataSourceTransactionManager(dataSource); } }MyBatis (Config2) à partir de différentes sources de données
@Configuration @MapperScan(basePackages = "com.pet.petgame2.mapper.dao2", sqlSessionFactoryRef = "petgamesqlSessionFactory") public class Config2 { @Bean(name = "petgame") @ConfigurationProperties(prefix = "spring.datasource.ds1") public DataSource dataSource(){ return DataSourceBuilder.create().build(); } @Bean(name = "petgamesqlSessionFactory") public SqlSessionFactory sessionFactory(@Qualifier("petgame") DataSource dataSource) throws Exception{ SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean(); factoryBean.setDataSource(dataSource); factoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:Mapper/petMapper/*.xml")); return factoryBean.getObject(); } @Bean(name = "petgameTransactionManager") public DataSourceTransactionManager transactionManager(@Qualifier("petgame") DataSource dataSource){ return new DataSourceTransactionManager(dataSource); } }L'annotation @MapperScan analysera automatiquement le fichier d'interface du mappeur. factoryBean.setMapperLocations analysera le fichier Mapper.XML correspondant au fichier d'interface du mappeur. de ces deux ne sont pas les mêmes. @Primary définit la configuration par défaut des liens de base de données et l'une des sources de données doit être spécifiée par défaut. *Remarque : Si vous utilisez Hikari fourni avec springboot2.0 comme pool de connexions, vous devez faire attention à
spring.datasource.url改为spring.datasource.jdbc-urldans les propriétés ou modifier le DataSource dans la configuration en DataSourceProperties, comme suit
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!