下面我将为你详细讲解“SpringBoot整合Mybatis-Plus+Druid实现多数据源配置功能”的完整攻略,包括配置步骤、示例说明等。
配置步骤
- 引入依赖
在pom.xml
文件中添加以下依赖:
```xml
```
- 配置数据源
在application.yml
文件中配置数据源,需要在主数据源和副数据源中分别配置url
、username
、password
等连接信息,并指定其使用的连接池类型,如下所示:
```yml
spring:
datasource:
# 主数据源配置
primary:
url: jdbc:mysql://localhost:3306/test1?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
druid:
# 连接池配置
pool-prepared-statements: true
max-pool-prepared-statement-per-connection-size: 10
validation-query: select 1
test-while-idle: true
test-on-borrow: false
test-on-return: false
initial-size: 5
min-idle: 5
max-active: 20
filters: stat, wall, log4j2
# 副数据源配置
secondary:
url: jdbc:mysql://localhost:3306/test2?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
druid:
# 连接池配置
pool-prepared-statements: true
max-pool-prepared-statement-per-connection-size: 10
validation-query: select 1
test-while-idle: true
test-on-borrow: false
test-on-return: false
initial-size: 5
min-idle: 5
max-active: 20
filters: stat, wall, log4j2
```
- 配置Mybatis-Plus
在application.yml
文件中配置Mybatis-Plus,主要是配置Mapper的包路径,如下所示:
yml
mybatis-plus:
mapper-locations: classpath:mapper/*.xml
- 配置Mybatis-Plus分页插件
在SpringBoot启动类中添加如下代码:
```java
@Configuration
public class MybatisPlusConfig {
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
}
```
- 创建Mapper接口
创建Mapper接口,并使用Mybatis-Plus提供的@Mapper
注解进行标记,同时需要使用@DS
注解指定当前数据源,如下所示:
```java
@Mapper
@DS("primary") // 指定数据源
public interface PrimaryMapper {
@Select("select * from user")
List<User> selectAll();
}
@Mapper
@DS("secondary") // 指定数据源
public interface SecondaryMapper {
@Select("select * from book")
List<Book> selectAll();
}
```
- 测试
在Controller中注入两个Mapper接口,然后调用对应的方法即可,如下所示:
```java
@RestController
public class TestController {
@Autowired
private PrimaryMapper primaryMapper;
@Autowired
private SecondaryMapper secondaryMapper;
@GetMapping("/test")
public void test() {
System.out.println(primaryMapper.selectAll()); // 使用主数据源
System.out.println(secondaryMapper.selectAll()); // 使用副数据源
}
}
```
示例说明
下面分别使用主数据源和副数据源创建一个表,并存入数据,然后从对应的数据源中查询数据。
- 使用主数据源
创建一个名为test1
的数据库,并在其中创建一个名为user
的数据表,表结构如下所示:
sql
CREATE TABLE `user` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(30) DEFAULT NULL,
`age` tinyint(4) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;
然后在主数据源中插入一条数据,代码如下所示:
```java
@Mapper
@DS("primary") // 指定数据源
public interface PrimaryMapper {
@Select("select * from user")
List<User> selectAll();
@Insert("insert into user(name, age) values('张三', 20)")
int insert();
}
```
最后,在Controller中调用insert()
方法插入一条数据,并用selectAll()
方法查询所有数据,代码如下所示:
```java
@RestController
public class TestController {
@Autowired
private PrimaryMapper primaryMapper;
@GetMapping("/test")
public void test() {
primaryMapper.insert(); // 插入数据到主数据源
System.out.println(primaryMapper.selectAll()); // 查询主数据源中的所有数据
}
}
```
在浏览器中访问http://localhost:8080/test
,即可看到主数据源中的所有数据。
- 使用副数据源
创建一个名为test2
的数据库,并在其中创建一个名为book
的数据表,表结构如下所示:
sql
CREATE TABLE `book` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(30) DEFAULT NULL,
`price` decimal(10,2) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;
然后在副数据源中插入一条数据,代码如下所示:
```java
@Mapper
@DS("secondary") // 指定数据源
public interface SecondaryMapper {
@Select("select * from book")
List<Book> selectAll();
@Insert("insert into book(name, price) values('Java从入门到放弃', 99.9)")
int insert();
}
```
最后,在Controller中调用insert()
方法插入一条数据,并用selectAll()
方法查询所有数据,代码如下所示:
```java
@RestController
public class TestController {
@Autowired
private SecondaryMapper secondaryMapper;
@GetMapping("/test")
public void test() {
secondaryMapper.insert(); // 插入数据到副数据源
System.out.println(secondaryMapper.selectAll()); // 查询副数据源中的所有数据
}
}
```
在浏览器中访问http://localhost:8080/test
,即可看到副数据源中的所有数据。
至此,本篇文章已经为你详细讲解了“SpringBoot整合Mybatis-Plus+Druid实现多数据源配置功能”的完整攻略,希望能对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot整合Mybatis-Plus+Druid实现多数据源配置功能 - Python技术站