@DS注解实现动态数据源切换
@DS注解可以作用于方法、类上。
当注解添加到类上,意味着此类里的方法都使用此数据源;
当注解添加到方法上时,意味着此方法上使用的数据源优先级高于其他一切配置;
- pom文件引包
<!-- 动态数据源切换 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>3.5.1</version>
</dependency>
- 配置文件配置多个数据源
##设置默认的数据源或者数据源组,默认值即为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
- 配置@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(){
}