适用范围

  1. 基于spring boot 2.0
  2. orm框架使用jpa

无法修改原先的任何代码。

操作步骤

  1. 修改pom文件加入依赖

pom.xml

<!-- https://mvnrepository.com/artifact/org.postgresql/postgresql -->
        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <version>42.2.18</version>
        </dependency>
  1. 修改pom文件,新增profile环境

pom.xml

<!--postgress配置-->
        <profile>
            <id>pg</id>
            <properties>
                <profile.active>pg</profile.active>
            </properties>
        </profile>
  1. 新增application-pg.yaml配置

application-pg.yaml

server:
  port: 9006
  servlet:
    context-path: /applicationmonitor
spring:
  datasource:
    url: jdbc:postgresql://*.16.3.*:*/monitor
    username: ***
    password: ***
    driver-class-name: org.postgresql.Driver
  application:
    name: applicationmonitor
  profiles:
    active: @profile[email protected]
  jpa:
    database-platform: org.hibernate.dialect.PostgreSQL95Dialect
    hibernate:
      ddl-auto: update
    show-sql: true
    database: postgresql

kubernetes:
  admin-conf: classpath:k8s/admin-pg.conf
  

此处建议覆盖application.yaml中的所有配置项。注意driver-class-namedatabase-platform等postgress特有配置项。

  1. 检查关键字

postgress中的关键字与mysql不同,需要特别注意,例如postgress中的user无法直接使用,需要使用反引号标记。

示例:

@NotNull(message = "user不能为空")
@Column(name = "`user`")
@ApiModelProperty(required = true, value = "用户信息", example = "admin")
private String user;

经过以上改动,项目可以兼容运行在MySQL和postgress数据下。

备注

postgress不支持createDatabaseIfNotExist=true的自动建库写法,需要数据库管理员主动创建数据库。