原有的项目中使用mysql数据库保存应用数据,后面由于国产化要求,需要替换mysql为opengauss。由于不同的项目要求不同,mysql数据源还要保留。按照如下配置,仅需修改配置文件,就可以在mysql和opengauss之间切换
1、引入依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
</dependency>
2、配置数据源,在原有mysql的基础上增加opengauss数据源配置
spring:
application:
name: data-integration-dev
datasource:
dynamic:
datasource:
mysql:
driver-class-name: com.mysql.cj.jdbc.Driver
password: **********************
type: com.zaxxer.hikari.HikariDataSource
url: jdbc:mysql://******:3306/*****?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
username: ********
gp:
url: jdbc:postgresql://**********:5400/postgres?currentSchema=***********
username: ***********
password: *********
driver-class-name: org.postgresql.Driver
type: com.alibaba.druid.pool.DruidDataSource
primary: gp
3、使用多个mapper,修改mybatis-plus配置文件,mybatis配置如下:
mybatis-plus:
configuration:
default-enum-type-handler: org.apache.ibatis.type.EnumOrdinalTypeHandler
log-impl: org.apache.ibatis.logging.nologging.NoLoggingImpl
map-underscore-to-camel-case: true
global-config:
db-config:
id-type: auto
logic-delete-value: 1
logic-not-delete-value: 0
##后续如果修改为mysql,只需要修改配置文件
mapper-locations: classpath:/gaussmapper/**/*.xml
type-aliases-package: com.***.bigdata.integration.entity
type-enums-package: com.****.bigdata.integration.common
代码结构如下,文件中mapper和gaussmapper分别为mysql和opengauss使用的mapper.xml文件
迁移中遇到的问题:
mysql函数pg不支持,如str_to_date,ifnull等,因此迁移数据库,需要修改之前的mapper文件