前言
MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window) 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
本系列博客结合实际应用场景,阐述MyBatis-Plus实际应用中的问题以及使用方法。
本篇博客介绍如何基于mybatisPlus实现在一个项目中使用多数据源。
官网:https://baomidou.com/
目录
- 前言
- 引出
- 一、多数据源应用场景
- 1.主从同步,读写分离
- 2.可能数据存储在不同的数据源
- 二、在spring中使用多数据源
- 1.引入依赖
- 2.配置多个数据源
- 3.使用@DS注解标识
- 3.默认数据库
- 4.根据注解决定去那个数据库
- 总结
引出
1.mybatisPlus多数据源的使用场景;
2.基于mybatisPlus实现在一个项目中使用多数据源;
一、多数据源应用场景
1.主从同步,读写分离
主从同步,读写分离
创建一个数据用户,控制其权限
mysql> create user 'slave01'@'%' identified WITH mysql_native_password by '123';
Query OK, 0 rows affected (0.00 sec)
mysql> grant select ON *.* to 'slave01'@'%';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
2.可能数据存储在不同的数据源
可能需要查不同数据源的数据库
二、在spring中使用多数据源
1.引入依赖
<!-- mybatis多数据源--><dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId><version>2.5.6</version></dependency>
2.配置多个数据源
spring:main:allow-circular-references: truedatasource:dynamic:primary: mysql_centos #配置主数据源datasource:mysql_yun: # 数据源的名字,第一个数据源url: jdbc:mysql://124.70.138.34:3306/fresh_db_test?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&allowMultiQueries=trueusername: rootpassword: XXXXdriver-class-name: com.mysql.cj.jdbc.Drivermysql_centos: # 数据源的名字,第二个数据源url: jdbc:mysql://192.168.111.130:3306/fresh_customer_db?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&allowMultiQueries=trueusername: rootpassword: 123driver-class-name: com.mysql.cj.jdbc.Driverdruid:initial-size: 1max-active: 20min-idle: 1max-wait: 60000# 去除一下durid的自动装配autoconfigure:exclude: org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration #去除Druid自动配置
3.使用@DS注解标识
package com.tianju.fresh.service;import com.baomidou.dynamic.datasource.annotation.DS;
import com.tianju.fresh.entity.Customer;
import com.tianju.fresh.mapper.CustomerMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.util.List;@Service
public class TestManyDatasource {@Autowiredprivate CustomerMapper customerMapper;@DS("mysql_yun")public void findFromHuawei(){System.out.println("云服务器上的数据库");List<Customer> all = customerMapper.findAll();System.out.println(all);}@DS("mysql_centos")public void findFromLocal(){System.out.println("本地虚拟机的数据库");List<Customer> all = customerMapper.findAll();System.out.println(all);}
}
3.默认数据库
配置yml文件中
primary: mysql_centos #配置主数据源
的作用如下,默认数据库
4.根据注解决定去那个数据库
@DS(“mysql_yun”)
由注解确定去哪个数据源进行查找
package com.tianju.fresh;import com.tianju.fresh.service.TestManyDatasource;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;@SpringBootTest
@RunWith(SpringJUnit4ClassRunner.class)
public class ManyDataSourceTest {@Autowiredprivate TestManyDatasource manyDatasource;@Testpublic void test2(){manyDatasource.findFromHuawei();manyDatasource.findFromLocal();}}
总结
1.mybatisPlus多数据源的使用场景;
2.基于mybatisPlus实现在一个项目中使用多数据源;