适用于多种场景:纯粹多库、 读写分离、 一主多从、 混合模式等。
一个基于springboot的快速集成多数据源的启动器。
这是一个第三方 mybatis 扩展库,与 mybatis-plus 本身无关,属于组织参与者小锅盖个人发起的项目。
dynamic-datasource-spring-boot-starter 是一个基于springboot的快速集成多数据源的启动器。
其支持 Jdk 1.7+, SpringBoot 1.4.x 1.5.x 2.x.x。
①之前我们在我们的数据库mybatis_plus创建了一个表t_user,现在我们再创建一个数据库mybatis_plus1然后在其中创建一个product表。
两个数据库分别有一个表t_user以及product
t_user表结构如下
product表结构如下
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>3.5.0</version>
</dependency>
spring:
datasource:
# 配置数据源类型
type: com.zaxxer.hikari.HikariDataSource
dynamic:
primary: master #设置默认的数据源或者数据源组,默认值即为master
strict: false #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源
datasource:
master:
url: jdbc:mysql://localhost:3306/mybatis_plus?serverTimezone=GMT%2B8&characterEncoding=utf-8&useSSL=false
username: root
password: 1230
driver-class-name: com.mysql.cj.jdbc.Driver
slave_1:
url: jdbc:mysql://localhost:3306/mybatis_plus1?serverTimezone=GMT%2B8&characterEncoding=utf-8&useSSL=false
username: root
password: 1230
driver-class-name: com.mysql.cj.jdbc.Driver
#......省略
#以上会配置一个默认库master,一个slave_1
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
这里不再赘述,按照上篇讲过的,使用mybatisplus生成器生成实体类、Service接口以及实现类以及Mapper接口和mapper文件。
别忘了在springboot的启动类上加入mapper包的扫描哦。
package com.csdn.mybatis;
import com.csdn.mybatis.entity.Product;
import com.csdn.mybatis.entity.User;
import com.csdn.mybatis.service.IProductService;
import com.csdn.mybatis.service.IUserService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.List;
@SpringBootTest
class Mybatisplus02ApplicationTests {
@Autowired
IUserService userService;
@Autowired
IProductService productService;
@Test
public void test(){
List<User> users = userService.list();
users.forEach(System.out::println);
List<Product> products = productService.list();
products.forEach(System.out::println);
}
}
输出的sql语句为
不同数据库多数据源测试成功。