springBoot实现mybatis-plus多数据源配置
·
mysql多数据源配置
在工作中,我们经常会遇到需要从不同的数据库中获取数据的情况,接下来介绍一种在SpringBoot中连接多个数据库并获取数据的方法。
1.引入MybatisPlus多数据源依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<!-- MyBatis的多数据源 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>3.3.1</version>
</dependency>
<!--mysql-->
<!-- 配置多数据源时不要引用-->
<!--<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.9</version>
</dependency>
<!-- MyBatis-plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.2</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-annotation</artifactId>
<version>3.3.2</version>
</dependency>
<!-- MyBatis的分页 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>4.1.4</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
2.application.yml配置
spring:
# mysql配置内容
datasource:
dynamic:
primary: db1 # 主数据源
strict: false #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源
datasource: # 数据源说明
db1:
# 数据库驱动,这里要换成自己所用的数据库的驱动
driver-class-name: com.mysql.jdbc.Driver #com.mysql.cj.jdbc.Driver
# 数据库地址和数据库名,这里也是要换成自己的
url: jdbc:mysql://localhost:3306/data?useUnicode=true&useSSL=false&serverTimezone=Asia/Shanghai&allowMultiQueries=true
username: root #数据库连接用户名
password: 123456 #数据库连接密码
db2:
# 数据源2的数据库驱动,可以和db1不同
driver-class-name: com.mysql.jdbc.Driver
# 数据库2的地址
url: jdbc:mysql://localhost:3306/data?autoReconnect=true&useSSL=false&allowMultiQueries=true&useUnicode=true
username: root #数据库连接用户名
password: 123456 #数据库连接密码```
3.在数据访问层(mapper)或者逻辑层(serviceImpl)上添加@DS注解
@DS 可以放在在方法上和类上,同时存在时方法优先于类,并建议注解放在在mapper接口类上。
在使用@DS注解时,有如下注意事项:
- 不能使用事务,否则数据源不会切换,默认是第一次加载的数据源
- 第一次加载数据源之后,后面操作其它数据源时,如果数据源不存在,使用的还是第一次加载的数据源
- 数据源名称不要包含下划线,否则不能切换
@Mapper
@DS("db1")
public interface CityMapper extends BaseMapper<NewsArea> {
}
4.启动类中main方法使用exclude禁用默认加载的application单数据源配置
@SpringBootApplication(exclude={DataSourceAutoConfiguration.class})
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)