在开发中,有时候我们需要连接多个数据库进行操作,比如一个应用需要连接到主数据库和从数据库,这时候就需要配置多库。在使用Spring Boot和MyBatis Plus的情况下,配置多库并实现多库操作是一个常见的需求。

1. 添加依赖

首先,在pom.xml中添加Spring Boot和MyBatis Plus的依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>${mybatis-plus.version}</version>
</dependency>

2. 配置数据源

application.propertiesapplication.yml文件中配置多个数据源的信息:

spring.datasource.master.url=jdbc:mysql://localhost:3306/master_db
spring.datasource.master.username=root
spring.datasource.master.password=root

spring.datasource.slave.url=jdbc:mysql://localhost:3306/slave_db
spring.datasource.slave.username=root
spring.datasource.slave.password=root

3. 创建数据源配置类

创建一个数据源配置类,用来配置多个数据源:

@Configuration
public class DataSourceConfig {

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

    @Bean(name = "slaveDataSource")
    @ConfigurationProperties(prefix = "spring.datasource.slave")
    public DataSource slaveDataSource() {
        return DataSourceBuilder.create().build();
    }
}

4. 配置MyBatis Plus

配置MyBatis Plus,指定使用哪个数据源:

@Configuration
public class MyBatisPlusConfig {

    @Bean
    public MybatisSqlSessionFactoryBean masterSqlSessionFactory(@Qualifier("masterDataSource") DataSource dataSource) throws Exception {
        MybatisSqlSessionFactoryBean sqlSessionFactory = new MybatisSqlSessionFactoryBean();
        sqlSessionFactory.setDataSource(dataSource);
        return sqlSessionFactory;
    }

    @Bean
    public MybatisSqlSessionFactoryBean slaveSqlSessionFactory(@Qualifier("slaveDataSource") DataSource dataSource) throws Exception {
        MybatisSqlSessionFactoryBean sqlSessionFactory = new MybatisSqlSessionFactoryBean();
        sqlSessionFactory.setDataSource(dataSource);
        return sqlSessionFactory;
    }
}

5. 使用多库操作

在需要操作数据库的地方,使用@Qualifier注解指定使用哪个数据源:

@Service
public class UserService {

    @Autowired
    @Qualifier("masterSqlSessionFactory")
    private SqlSessionFactory masterSqlSessionFactory;

    @Autowired
    @Qualifier("slaveSqlSessionFactory")
    private SqlSessionFactory slaveSqlSessionFactory;

    // 使用master数据库
    public void addUser(User user) {
        try (SqlSession sqlSession = masterSqlSessionFactory.openSession()) {
            UserMapper mapper = sqlSession.getMapper(UserMapper.class);
            mapper.insert(user);
        }
    }

    // 使用slave数据库
    public User getUserById(Long id) {
        try (SqlSession sqlSession = slaveSqlSessionFactory.openSession()) {
            UserMapper mapper = sqlSession.getMapper(UserMapper.class);
            return mapper.selectById(id);
        }
    }
}

通过以上步骤,我们就成功地配置了多个数据源,并实现了多库操作。在需要操作数据库的地方,可以根据需要选择使用哪个数据源进行操作,使得数据库操作更加灵活。

总结:配置多库在实际开发中是一个常见的需求,通过Spring Boot和MyBatis Plus的配合,可以很方便地实现多库操作。希望本文能帮助到大家理解如何配置多库并进行操作。