【mybatis】spring boot框架中使用mybatis-plus配置多数据源
·
1、简介
- 在Java开发中,当使用MyBatis-Plus进行数据库操作时,可能会遇到需要配置多数据源的场景,比如读写分离、操作多个数据库等。
- MyBatis-Plus本身是基于MyBatis的增强工具,它并没有直接提供多数据源的配置支持,但可以通过结合Spring Boot框架来实现多数据源的配置。
2、实际操作
1. 添加依赖
首先,确保pom.xml(Maven)文件中包含了Spring Boot、MyBatis-Plus以及数据库连接池的依赖。
<dependencies>
<!-- Spring Boot Starter -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<!-- Spring Boot Starter Web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- MyBatis-Plus Starter -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>你的版本号</version>
</dependency>
<!-- 数据库连接池(例如 HikariCP)-->
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
</dependency>
<!-- 数据库驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
</dependencies>
2. 配置数据源
在application.yml或application.properties中配置多个数据源。
application.yml :
spring:
datasource:
db1:
url: jdbc:mysql://localhost:3306/db1
username: root
password: password
driver-class-name: com.mysql.cj.jdbc.Driver
db2:
url: jdbc:mysql://localhost:3306/db2
username: root
password: password
driver-class-name: com.mysql.cj.jdbc.Driver
3. 配置数据源Bean
在配置类中,为每个数据源创建一个DataSource、SqlSessionFactory和TransactionManager Bean。
配置类示例:
@Configuration
public class DataSourceConfig {
@Bean(name = "db1DataSource")
@ConfigurationProperties(prefix = "spring.datasource.db1")
public DataSource db1DataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "db2DataSource")
@ConfigurationProperties(prefix = "spring.datasource.db2")
public DataSource db2DataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "db1SqlSessionFactory")
public SqlSessionFactory db1SqlSessionFactory(@Qualifier("db1DataSource") DataSource dataSource) throws Exception {
// 配置SqlSessionFactory
}
@Bean(name = "db2SqlSessionFactory")
public SqlSessionFactory db2SqlSessionFactory(@Qualifier("db2DataSource") DataSource dataSource) throws Exception {
// 配置SqlSessionFactory
}
// 配置TransactionManager
// ...
}
4. 使用数据源
在Service层或Mapper层,通过@Qualifier注解来指定使用哪个数据源。
Mapper示例:
@Mapper
@RepositoryRestResource(collectionResourceRel = "users", path = "users")
public interface UserMapper {
@Select("SELECT * FROM users")
List<User> selectAll();
}
// 注意:通常Mapper层不直接指定数据源,而是通过SqlSessionFactory指定。
// 如果有必要在Mapper层面区分数据源,可能需要使用动态数据源切换。
更多推荐
所有评论(0)