可以通过使用@Qualifier注解和@Autowired注解来引用特定的SqlSessionFactory

首先,需要在每个数据源的配置类中定义一个SqlSessionFactory,并将其注入到Spring容器中,例如:

@Configuration
@MapperScan(basePackages = "com.example.mapper1", sqlSessionTemplateRef = "sqlSessionTemplate1")
public class DataSource1Config {

    @Bean(name = "dataSource1")
    @ConfigurationProperties(prefix = "spring.datasource1")
    public DataSource dataSource() {
        return DataSourceBuilder.create().build();
    }

    @Bean(name = "sqlSessionFactory1")
    public SqlSessionFactory sqlSessionFactory(@Qualifier("dataSource1") DataSource dataSource) throws Exception {
        SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
        sessionFactory.setDataSource(dataSource);
        return sessionFactory.getObject();
    }

    @Bean(name = "sqlSessionTemplate1")
    public SqlSessionTemplate sqlSessionTemplate(@Qualifier("sqlSessionFactory1") SqlSessionFactory sqlSessionFactory) {
        return new SqlSessionTemplate(sqlSessionFactory);
    }
}

然后,在需要使用SqlSessionFactory的地方,可以使用@Qualifier注解指定要使用的数据源,例如:

@Service
public class MyService {

    private final SqlSessionFactory sqlSessionFactory1;
    private final SqlSessionFactory sqlSessionFactory2;

    @Autowired
    public MyService(@Qualifier("sqlSessionFactory1") SqlSessionFactory sqlSessionFactory1, 
                     @Qualifier("sqlSessionFactory2") SqlSessionFactory sqlSessionFactory2) {
        this.sqlSessionFactory1 = sqlSessionFactory1;
        this.sqlSessionFactory2 = sqlSessionFactory2;
    }

    // 使用sqlSessionFactory1或sqlSessionFactory2进行数据访问
    ...
}
``
使用mybatis+springboot在applicationyaml中配置了多个数据源如何在程序中引用SqlSessionFactory

原文地址: https://www.cveoy.top/t/topic/foq8 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录