在开发中,有时候我们需要连接多个数据库进行操作,比如一个应用需要连接到主数据库和从数据库,这时候就需要配置多库。在使用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.properties
或application.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的配合,可以很方便地实现多库操作。希望本文能帮助到大家理解如何配置多库并进行操作。