使用mybatis+springboot在applicationyaml中配置了多个数据源如何在程序中引用SqlSessionFactory
可以通过使用@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进行数据访问
...
}
``
原文地址: https://www.cveoy.top/t/topic/foq8 著作权归作者所有。请勿转载和采集!