Несколько источников данных MyBatis-Plus — как использовать несколько баз данных MySQL в одном проекте

Вставьте сюда описание изображения

Предисловие

MyBatis-Plus (открывается в новом окне) (называемый MP) — это инструмент улучшения для MyBatis (открывается в новом окне). Основанный на MyBatis, он только расширяется без внесения изменений. Он создан для упрощения разработки и повышения эффективности.

В этой серии блогов объединены практические сценарии применения, объясняющие проблемы и методы использования MyBatis-Plus в практических целях.

В этом блоге рассказывается, как использовать несколько источников данных в проекте на основе mybatisPlus.

Официальный сайт: https://baomidou.com/

выводить


1. Сценарии использования нескольких источников данных mybatisPlus
2. Использование нескольких источников данных в одном проекте на основе mybatisPlus;

1. Сценарии применения нескольких источников данных

1. Синхронизация Master-Slave, разделение чтения и записи.

Синхронизация Master-Slave, разделение чтения и записи.

Вставьте сюда описание изображения

Создайте пользователя данных и управляйте его разрешениями

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. Данные могут храниться в разных источниках данных.

Возможно, вам придется проверить базы данных с разными источниками данных.

Вставьте сюда описание изображения

2. Использование нескольких источников данных весной

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: true
  datasource:
    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=true
          username: root
          password: XXXX
          driver-class-name: com.mysql.cj.jdbc.Driver
        mysql_centos: # 数据源的名字,第二个数据源
          url: jdbc:mysql://192.168.111.130:3306/fresh_customer_db?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&allowMultiQueries=true
          username: root
          password: 123
          driver-class-name: com.mysql.cj.jdbc.Driver
      druid:
        initial-size: 1
        max-active: 20
        min-idle: 1
        max-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 {
    
    
    @Autowired
    private 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
: 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 {
    
    

    @Autowired
    private TestManyDatasource manyDatasource;

    @Test
    public void test2(){
    
    
        manyDatasource.findFromHuawei();
        manyDatasource.findFromLocal();
    }

}

Подведем итог

1. Сценарии использования нескольких источников данных mybatisPlus
2. Использование нескольких источников данных в одном проекте на основе mybatisPlus;

Supongo que te gusta

Origin blog.csdn.net/Pireley/article/details/133344286
Recomendado
Clasificación