SpringBoot 配置双数据库源 MySQL And PostgreSQL

1,681 阅读1分钟

起因

今天是遇到这样一个业务场景,公司项目用的是MySQL,但是遇到了一个需求,需要接入外部其他数据库来获取一些数据。

之前完全没接触过呀,然后就开始研究怎么接入,需要接入的是Postgre

然后通过查阅资料发现还是很简单的,这里直接贴解决问题过程了。

引入依赖

<!-- https://mvnrepository.com/artifact/org.postgresql/postgresql -->
<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <version>42.3.5</version>
</dependency>

<!-- 最重要 -->
<!-- https://mvnrepository.com/artifact/com.baomidou/dynamic-datasource-spring-boot-starter -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
    <version>3.5.1</version>
</dependency>

首先引入这两个依赖包,postgresql这个依赖包没什么好说的对标MySQL的依赖就好了

重点就是dynamic-datasource-spring-boot-starter,这是一个基于SpringBoot的集成多数据源的启动器,实现多数据源主要就是靠这个啦,详细特性这里就不一一介绍了,这里有详细文档 直达GitHub项目文档

修改项目配置文件


# 默认使用MySQL数据源
spring.datasource.dynamic.primary=mysql

# 启动后在未匹配到指定数据源时候会抛出异常,不启动则会使用默认数据源
spring.datasource.dynamic.strict=false
spring.datasource.dynamic.datasource.postgre.url=jdbc:postgresql://xxx.xxx.xxx.xx:5432/xxxxx
spring.datasource.dynamic.datasource.postgre.username=root
spring.datasource.dynamic.datasource.postgre.password=123123123
spring.datasource.dynamic.datasource.postgre.driver-class-name=org.postgresql.Driver
spring.datasource.dynamic.datasource.postgre.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.dynamic.datasource.mysql.url=jdbc:mysql://xxx.xxx.xxx.xx:3306/xxx
spring.datasource.dynamic.datasource.mysql.username=root
spring.datasource.dynamic.datasource.mysql.password=3121121231
spring.datasource.dynamic.datasource.mysql.driver-class-name=com.mysql.jdbc.Driver

image.png

在Dao/Mapper层加上 @Ds 注解,value指定postgre数据源,这样代码执行的时候,会从你指定的数据源中查找数据,因为配置了 spring.datasource.dynamic.strict=false 所以调用MySQL的mapper是不需要加这个注解的,如果配置为true后,就都需要加了。

image.png

简单总结

先引依赖,再改配置,最后加注解,然后就ok了

目前只用到了查询,发现和MySQL没什么两样,直接idea刷刷生成mapper,model,写个controller,service,后面会具体研究研究postgre数据库,应该会更一篇postgre的文章,今天先把项目跑起来,哈哈

然后项目启动一切正常,测试一切正常!! 到此就OK了