主要介绍MybatisPlus多数据源的简单应用,更多可参考MyBatisPlus多数据源
1 引入依赖
<!--多数据源-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>3.6.1</version>
</dependency>
2 配置多数据源
spring:
# 配置数据源信息
datasource:
dynamic:
# 设置默认的数据源或者数据源组,默认值即为master
primary: master
# 严格匹配数据源,默认false.true未匹配到指定数据源时抛异常,false使用默认数据源
strict: false
datasource:
# 数据源一,主数据源
master:
url: jdbc:mysql://localhost:3306/db_mybatis_plus?characterEncoding=utf-8&useSSL=false
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: root
# 数据源二
product:
url: jdbc:mysql://localhost:3306/db_mybatis_plus_dynamic_datasource?characterEncoding=utf-8&useSSL=false
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: root
3 使用 @DS 注解切换数据源
@DS 可以注解在方法上或类上,同时存在就近原则 方法上注解 优先于 类上注解。
如果没有@DS注解,则使用默认数据源,当存在@DS注解时,则使用其value属性指定的数据源。
@DS("product")
@Service
public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> implements ProductService {
}
@DS("master")
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
}
4 测试多数据源
@SpringBootTest
@Slf4j
public class DynamicDataSourceTest {
@Autowired
private UserService userService;
@Autowired
private ProductService productService;
@Test
public void testDynamicDataSourceQuery(){
List<User> userList = userService.list();
userList.forEach(System.out::println);
List<Product> productList = productService.list();
productList.forEach(System.out::println);
}
}