@DS注解实现动态数据源切换

@DS注解实现动态数据源切换

@DS注解可以作用于方法、类上。
当注解添加到类上,意味着此类里的方法都使用此数据源;
当注解添加到方法上时,意味着此方法上使用的数据源优先级高于其他一切配置;

  1. pom文件引包
		<!-- 动态数据源切换 -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
            <version>3.5.1</version>
        </dependency>
  1. 配置文件配置多个数据源
##设置默认的数据源或者数据源组,默认值即为master
spring.datasource.dynamic.primary=master
#设置严格模式,默认false不启动. 启动后在未匹配到指定数据源时候会抛出异常,不启动则使用默认数据源.
spring.datasource.dynamic.strict=false
# postgresql 配置  主库的配置
spring.datasource.dynamic.datasource.master.url = jdbc:postgresql://localhost:5432/zhejiang_data_repository
spring.datasource.dynamic.datasource.master.username=root
spring.datasource.dynamic.datasource.master.password=root
spring.datasource.dynamic.datasource.master.driver-class-name=org.postgresql.Driver
#从库的配置
spring.datasource.dynamic.datasource.slave.url = jdbc:postgresql://localhost:5432/server_test_logdb
spring.datasource.dynamic.datasource.slave.username=postgres
spring.datasource.dynamic.datasource.slave.password=123456
spring.datasource.dynamic.datasource.slave.driver-class-name=org.postgresql.Driver
  1. 配置@DS注解
    1、作用类上,说明这个类都使用从库数据源
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.southsmart.repository.model.dto.DataCount;
import com.southsmart.repository.model.po.ServiceAccessLog;
import org.apache.ibatis.annotations.Mapper;

import java.util.Date;
import java.util.List;

/**
 * mapper层   
 * @DS("slave")说明这个mapper用的从库的数据源配置,如果不加@DS注解就是用默认的主库数据源配置
 * @author yjj
 * @version 1.0
 * @since 2022 -09-14 11:40:54
 */
@Mapper
@DS("slave")
public interface ServiceAccessLogMapper extends BaseMapper<ServiceAccessLog> {

}

2、作用单独方法上
执行此方法时使用的就是从库数据源配置

@DS("slave")
public void selectPage(){

}

你可能感兴趣的:(数据库,java,mybatis)