spring boot 동적 전환 데이터 원본 의 실현

데이터 양 이 비교적 많 을 때 우 리 는 읽 기와 쓰기 분 리 를 고려 해 야 한다.즉,동적 으로 데이터 베 이 스 를 연결 하고 지정 한 데이터 베 이 스 를 조작 하 는 것 이다.스프링 에서 동적 전환 을 실현 하 는 것 은 AOP 를 이용 한 것 일 뿐이다.mybatis-plus 작성 자가 개발 한 플러그 인 dynamic-datasource-spring-boot-starter 를 사용 할 수 있 습 니 다.
demo 주소:https://github.com/songshijun1995/spring-boot-dynamic-demo
새 항목 도입 의존

<dependency>
  <groupId>com.baomidou</groupId>
  <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
  <version>3.3.1</version>
</dependency>
<dependency>
  <groupId>com.baomidou</groupId>
  <artifactId>mybatis-plus-boot-starter</artifactId>
  <version>3.4.1</version>
</dependency>
설정 yml

server:
 port: 8081
 servlet:
  context-path: /

spring:
 application:
  name: spring-boot-dynamic-demo
 datasource:
  dynamic:
   primary: master #              ,     master
   strict: false #      ,  false   .                     ,           .
   datasource:
    master: #           
     url: jdbc:mysql://127.0.0.1:3306/dynamic1?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&failOverReadOnly=false&zeroDateTimeBehavior=convertToNull&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true&allowMultiQueries=true&rewriteBatchedStatements=true
     username: root
     password: 123456
     driver-class-name: com.mysql.cj.jdbc.Driver
    slave_1:
     url: jdbc:mysql://127.0.0.1:3306/dynamic2?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&failOverReadOnly=false&zeroDateTimeBehavior=convertToNull&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true&allowMultiQueries=true&rewriteBatchedStatements=true
     username: root
     password: 123456
     driver-class-name: com.mysql.cj.jdbc.Driver

mybatis-plus:
 configuration:
  log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl
 global-config:
  db-config:
   logic-delete-value: 1
   logic-not-delete-value: 0
   logic-delete-field: deleted
 mapper-locations: classpath:/mapper/**.xml

logging:
 level:
  ROOT: INFO
  com.dynamic.dynamicdemo: DEBUG
 pattern:
  file: '%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{50} - %msg%n'
 file:
  name: ${logging.file.path}/${spring.application.name}.log
  path: /home/logs/${spring.application.name}
 logback:
  rollingpolicy:
   max-file-size: 10MB
   max-history: 30
my batis-plus 와 swagger 설정 은 더 이상 말 하지 않 겠 습 니 다.demo 에 다 있 습 니 다.
어떻게 사용 합 니까?

package com.dynamic.dynamicdemo.service.impl;

import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dynamic.dynamicdemo.dto.PageRequest;
import com.dynamic.dynamicdemo.dto.UserInfoRequest;
import com.dynamic.dynamicdemo.entities.BaseEntity;
import com.dynamic.dynamicdemo.entities.UserInfo;
import com.dynamic.dynamicdemo.mapper.UserInfoMapper;
import com.dynamic.dynamicdemo.service.UserInfoService;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

@Service
public class UserInfoServiceImpl extends ServiceImpl<UserInfoMapper, UserInfo> implements UserInfoService {

  @DS("master")
  @Transactional(rollbackFor = Exception.class)
  @Override
  public String saveUser(UserInfoRequest request) {
    UserInfo userInfo = new UserInfo();
    BeanUtils.copyProperties(request, userInfo);
    boolean save = save(userInfo);
    if (!save) {
      throw new RuntimeException("      ");
    }
    return "      ";
  }

  @DS("slave_1")
  @Override
  public IPage<UserInfo> pageUser(PageRequest request) {
    return page(new Page<>(request.getPageNum(), request.getPageSize()), Wrappers.<UserInfo>lambdaQuery().orderByDesc(BaseEntity::getCreateTime));
  }
}
방법 이나 클래스 에@DS(master)주 해 를 추가 하여 데이터 원본 을 지정 합 니 다.
데이터베이스 연결 및 라 이브 러 리 로 변경 하고 resources/sql 디 렉 터 리 의 sql 파일 을 실행 합 니 다.
프로젝트 접근 시작http://127.0.0.1:8081/doc.html테스트 를 진행 하 다
spring boot 동적 전환 데이터 원본 의 실현 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 spring boot 동적 전환 데이터 원본 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 바 랍 니 다!

좋은 웹페이지 즐겨찾기