乐趣区

关于tidb:testcontainersjava-新增对-TiDB-的支持

testcontainers-java 已于近期新增了对 TiDB 容器的反对。当前,在 Java 的应用程序中,你能够间接应用 Java 代码管制并创立 Docker 容器来应用 TiDB,并治理它的生命周期,而无需编写内部脚本,这将极大地简化开发流程。本文介绍了如何通过 testcontainers-java 创立和治理 TiDB 实例。

testcontainers-java 是一个 Java 的 JUnit 测试库,为数据库(包含 MySQL、Postgres、DB2、Clickhouse、CockroachDB 等)、Selenium 浏览器以及其它能在 Docker 容器中运行的我的项目提供了轻量的,随用随弃的实例。

testcontainers-java 已于近期新增了对 TiDB 容器的反对。

在其官网文档中,也呈现了 TiDB 的模块阐明:

当前,在 Java 的应用程序中,你能够间接应用 Java 代码管制并创立 Docker 容器来应用 TiDB,并治理它的生命周期,而无需编写内部脚本,这将极大地简化开发流程。

示例代码

能够这样创立一个 TiDBContainer 用于治理容器:

@Container
TiDBContainer tidb = new TiDBContainer("pingcap/tidb");

随后,能够应用此代码启动该容器,这将在任何领有 Docker 的机器上运行胜利

tidb.start();

随后,便可间接创立 Statement 并运行 SQL:

MysqlDataSource ds = new MysqlDataSource();
ds.setURL(tidb.getJdbcUrl());
ds.setUser(tidb.getUsername());
ds.setPassword(tidb.getPassword());
ds.setUseSSL(false);
Statement statement = ds.getConnection().createStatement();
statement.execute(sql);

示例仓库

咱们编写了一个示例代码的仓库 tidb-test-container-example。你能够应用这个仓库中的 AppTest.java 源码进行大量的更改后便可间接应用在你本人的我的项目中。

如果你心愿进行这个仓库的测试,只须要应用 mvn clean test 便可运行。此我的项目依赖 JDK 11、Maven 3。
运行的后果如下:

------------ TiDB default version ------------
db: test
username: root
password: 
jdbc: jdbc:mysql://localhost:56464/test
5.7.25-TiDB-v6.1.1
------------ TiDB v6.2.0 version ------------
db: test
username: root
password: 
jdbc: jdbc:mysql://localhost:56470/test
5.7.25-TiDB-v6.2.0

打印了两种不同版本容器的根本信息,和其运行 SELECT VERSION() 时的不同输入。

瞻望

PingCAP Global Community 团队旨在晋升开发者体验。除了本文提到的实现对 testcontainer-java 反对外,在过来一年已与社区成员一起,共同完成多项 TiDB 与支流 Driver / ORM 的适配兼容测试,如:Hibernate,Mybatis,MySQL JDBC,go-sql-driver/mysql,gorm 等,为开发者应用 TiDB 进行保驾护航;咱们预计将在未来的一段时间内,实现 TiDB 外键个性、更多 Fancy 的示例我的项目、更多 Driver / ORM 的兼容测试的开发。
如果您心愿退出咱们,或对我的项目有任何意见或倡议,能够通过在 TiDB Community 利用开发者交换专区发帖,或扫描下方二维码退出微信交换群等形式与咱们分割。

退出移动版