Springboot和MybatisPlus支持多数据源

jasmine 于 2020-05-04 发布

1、引入依赖

主要依赖包

<!--配置多数据源-->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
    <version>3.5.0</version>
</dependency>
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.3.2</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>

2、application.yml 配置文件

server:
  port: 8080
spring:
  datasource:
    dynamic:
      primary: db1 # 配置默认数据库
      datasource:
        db1: # 数据源1配置
          url: jdbc:mysql://localhost:3306/db1?characterEncoding=utf8&useUnicode=true&useSSL=false&serverTimezone=GMT%2B8
          username: root
          password: root
          driver-class-name: com.mysql.cj.jdbc.Driver
        db2: # 数据源2配置
          url: jdbc:mysql://localhost:3306/db2?characterEncoding=utf8&useUnicode=true&useSSL=false&serverTimezone=GMT%2B8
          username: root
          password: root
          driver-class-name: com.mysql.cj.jdbc.Driver

3、启动类增加扫描@MapperScan

@SpringBootApplication
  @EnableAsync
  @MapperScan("com.XXX.repository.mapper")
  public class DaTaskApplication {
  public static void main(String[] args) {
  SpringApplication.run(DaTaskApplication.class, args);
  }
}

4、Mappser接口给使用非默认数据源添加注解@DS

@DS("db2")
@Repository
public interface DaStbAudioMapper extends BaseMapper<DaStbAudio> {}

也可以加在service和方法上

@DS("db2")
public interface UserMapper extends BaseMapper<User> {
}

@Service
@DS("db2")
public class ModelServiceImpl extends ServiceImpl<ModelMapper, Model> implements IModelService {
    @Select("SELECT * FROM user")
    @DS("db2")
    List<User> selectAll();
}