springboot múltiples fuentes de datos

Dirección de GitHub de demostración del proyecto

Este artículo es para los zapatos de los niños que han dominado mybatis para configurar una única base de datos . Para aquellos que no dominen mybatis para configurar una sola fuente de datos, pueden encontrar otros artículos para compensarlo

Se pueden realizar ambas pruebas.
inserte la descripción de la imagen aquí

Integrar mybatis

Consulte la configuración de múltiples fuentes de datos del blog
mybatis

  1. Crear [entidad], [clase de interfaz], [archivo de mapeador], [base de datos]. Tenga en cuenta que el nombre de la clase de interfaz no puede ser el mismo
  2. Escriba el archivo yrm, configure [información de origen de datos], preste atención al uso de jdbcurl, no url
  3. Escriba la clase de configuración para inyectar [Fuente de datos], [SqlSessionFactory] y configure la información de ubicación de [Archivo de interfaz] y [Archivo de asignación].
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 se usa para especificar [clase de interfaz], información [SqlSession]
  • A continuación, cree la fuente de datos.
  • Cree una fábrica SqlSession y configure la ubicación del archivo de asignación. Tenga en cuenta el uso de este método getResources. No obtenerRecurso.
  • Crear una fábrica de gestión de transacciones
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();
    }
}

Supongo que te gusta

Origin blog.csdn.net/fuzekun/article/details/130068555
Recomendado
Clasificación