|
(另外一种方法)springboot使用MybatisPlus 如何同时连接2个MYSQL数据库
在Spring Boot中同时连接两个MySQL数据库,你需要配置两个数据源并分别为它们创建相应的SqlSessionFactory和MapperScanner。以下是一个基本的配置示例:
在application.properties或application.yml中配置两个数据源的基本属性:
- # 第一个数据库配置
- spring.datasource.primary.jdbc-url=jdbc:mysql://localhost:3306/db1?useSSL=false
- spring.datasource.primary.username=user1
- spring.datasource.primary.password=pass1
-
- # 第二个数据库配置
- spring.datasource.secondary.jdbc-url=jdbc:mysql://localhost:3306/db2?useSSL=false
- spring.datasource.secondary.username=user2
- spring.datasource.secondary.password=pass2
复制代码 配置数据源和SqlSessionFactory:
- @Configuration
- public class DataSourceConfig {
-
- @Bean
- @Primary
- @ConfigurationProperties(prefix = "spring.datasource.primary")
- public DataSource primaryDataSource() {
- return DataSourceBuilder.create().build();
- }
-
- @Bean
- @ConfigurationProperties(prefix = "spring.datasource.secondary")
- public DataSource secondaryDataSource() {
- return DataSourceBuilder.create().build();
- }
-
- @Bean
- public SqlSessionFactory primarySqlSessionFactory(@Qualifier("primaryDataSource") DataSource dataSource) throws Exception {
- SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
- bean.setDataSource(dataSource);
- return bean.getObject();
- }
-
- @Bean
- public SqlSessionFactory secondarySqlSessionFactory(@Qualifier("secondaryDataSource") DataSource dataSource) throws Exception {
- SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
- bean.setDataSource(dataSource);
- return bean.getObject();
- }
- }
复制代码 配置MyBatis Plus的MapperScanner:
- @Configuration
- public class MybatisPlusConfig {
-
- @Bean
- public MybatisPlusInterceptor mybatisPlusInterceptor() {
- MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
- // 这里可以添加自定义的拦截器等
- return interceptor;
- }
-
- @Bean
- @Primary
- public SqlSessionTemplate primarySqlSessionTemplate(@Qualifier("primarySqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
- return new SqlSessionTemplate(sqlSessionFactory);
- }
-
- @Bean
- public SqlSessionTemplate secondarySqlSessionTemplate(@Qualifier("secondarySqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
- return new SqlSessionTemplate(sqlSessionFactory);
- }
- }
复制代码 配置Mapper扫描,确保它们绑定到正确的SqlSessionTemplate:
- @MapperScan(basePackages = "com.example.primary.mapper", sqlSessionTemplateRef = "primarySqlSessionTemplate")
- @MapperScan(basePackages = "com.example.secondary.mapper", sqlSessionTemplateRef = "secondarySqlSessionTemplate")
复制代码 确保你的Mapper接口放在对应的包下,以便@MapperScan能够找到它们并为它们创建代理。
以上代码提供了一个基本框架,你需要根据自己的项目结构和需求进行相应的调整。例如,你可能需要为每个数据源配置事务管理器,并确保它们正确地与对应的SqlSessionTemplate关联。
|
|