springboot plusieurs sources de données

Démo du projet Adresse GitHub

Cet article s'adresse aux chaussures pour enfants qui ont maîtrisé mybatis pour configurer une seule base de données . Pour ceux qui ne maîtrisent pas mybatis pour configurer une seule source de données, vous pouvez trouver d'autres articles pour se rattraper

Les deux tests peuvent être effectués.
insérez la description de l'image ici

Intégrer mybatis

Reportez-vous à la configuration multi-sources de données du blog
mybatis

  1. Créez [entité], [classe d'interface], [fichier mappeur], [base de données]. Notez que le nom de la classe d'interface ne peut pas être le même
  2. Écrivez le fichier yrm, configurez [informations sur la source de données], faites attention à l'utilisation de jdbcurl, pas d'url
  3. Écrivez la classe de configuration pour injecter [Data Source], [SqlSessionFactory] et configurez les informations d'emplacement de [Interface File] et [Mapping File].
spring:
  datasource:
    bookstore:
      jdbcurl: jdbc:mysql://localhost:3306/bookstore2?serverTimezone=UTC    # 这个是jdbcurl不是url。
      username: root
      password: 1230
      driver-class-name: com.mysql.cj.jdbc.Driver
    test:
      jdbcurl: jdbc:mysql://localhost:3306/test?serverTimezone=UTC
      username: root
      password: 1230
      driver-class-name: com.mysql.cj.jdbc.Driver

  • @MapperScan est utilisé pour spécifier [classe d'interface], [SqlSession] informations
  • Créez ensuite la source de données
  • Créez une fabrique SqlSession et configurez l'emplacement du fichier de mappage. Notez l'utilisation de cette méthode getResources. Pas getResource.
  • Créer une usine de gestion des transactions
package com.springboot.config;

import org.apache.ibatis.session.SqlSessionFactory;

import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
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 org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.PlatformTransactionManager;

import javax.annotation.Resources;
import javax.sql.DataSource;

/**
 * @author: Zekun Fu
 * @date: 2023/4/10 17:59
 * @Description: 第一个数据源的配置
 */
@Configuration
// 指定接口包,数据源
@MapperScan(basePackages = "com.springboot.dto.bookstore", sqlSessionFactoryRef = "bookStoreSqlSessionFactory")
public class BookStoreDataSourceConfig {
    
    
    // 指定扫描文件
    private static final String MAPPER_LOCATION = "classpath*:mapper/bookStore/*.xml";


    @Primary
    @Bean(name = "bookStoreDataSource")
    @ConfigurationProperties(prefix = "spring.datasource.bookstore")
    public DataSource dataSource() {
    
    
        return DataSourceBuilder.create().build();
    }


    /**
     * 事务管理器
     */
    @Bean(name = "bookStoreTransactionManager")
    public PlatformTransactionManager dataSourceTransactionManager(@Qualifier("bookStoreDataSource") DataSource dataSource) {
    
    
        return new DataSourceTransactionManager(dataSource);
    }

    @Primary
    @Bean(name = "bookStoreSqlSessionFactory")
    public SqlSessionFactory sqlSessionFactory(@Qualifier("bookStoreDataSource") DataSource dataSource) throws Exception{
    
    
        final SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean();
        sessionFactoryBean.setDataSource(dataSource);
        Resource[] resources = new PathMatchingResourcePatternResolver().getResources(BookStoreDataSourceConfig.MAPPER_LOCATION);
        sessionFactoryBean.setMapperLocations(resources);
        return sessionFactoryBean.getObject();
    }
}

Je suppose que tu aimes

Origine blog.csdn.net/fuzekun/article/details/130068555
conseillé
Classement