MariaDB

自 12.3.6 起,MariaDB 拥有自己的平台,提供 SQL2012 历史记录支持和 DDL 生成以提供支持。

MariaDB JDBC 驱动程序 - useLegacyDatetimeCode

预期使用 MariaDB JDBC 驱动程序并设置 useLegacyDatetimeCode=false。这可确保 JDBC 驱动程序遵守数据库服务器时区。ebean-test 会自动设置 useLegacyDatetimeCode 参数,但否则我们需要确保在连接池中设置该参数。

## example manually setting useLegacyDatetimeCode in properties file
datasource.db.username=my_app
datasource.db.password=test
datasource.db.url=jdbc:mariadb://localhost:4306/unit?useLegacyDatetimeCode=false

预期使用 MariaDB JDBC 驱动程序。

<dependency>
  <groupId>org.mariadb.jdbc</groupId>
  <artifactId>mariadb-java-client</artifactId>
  <version>2.6.0</version>
</dependency>

测试

要在 MariaDB docker 测试容器上进行测试,请将 src/test/resources/application-test.yaml 中的 platform 设置为 mariadb

如果 application-test.yaml 尚未存在,请参阅 文档 / 测试

ebean:
  test:
    platform: mariadb
    ddlMode: dropCreate # none | dropCreate | migrations | create
    dbName: my_app

上述内容将使用以下默认值

用户名{dbName}
密码test
端口4306
urljdbc:mariadb://localhost:{port}/{dbName}?useLegacyDatetimeCode=false
镜像mariadb:{version:10}

 

 

ebean-mariadb 依赖项

如果我们只想引入 MariaDB 特定的平台代码,我们可以使用 io.ebean:ebean-mariadb 依赖项,而不是 io.ebean:ebean。依赖 io.ebean:ebean 将引入所有平台。

类型

UUID

UUID 不是 MariaDB 原生类型,可以映射到 BINARY(16) 或 VARCHAR(36)。

JSON

我们可以使用 @DbJson 映射内容。

历史支持

MariaDB 具有原生 SQL2011 历史支持,Ebean 将生成 DDL 以启用并将其用于使用 @History 注释的实体。

Docker 容器

我们可以使用 ebean-test-docker 通过以下方式以编程方式启动 MariaDB docker 容器

package main;

import io.ebean.docker.commands.MariaDBContainer;

public class Main {

  public static void main(String[] args) {

    MariaDBContainer container = MariaDBContainer.newBuilder("10.5")
      .dbName("unit")
      .password("unit")
      .build();

    container.start();
  }
}