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 |
url | jdbc: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();
}
}