testcontainers-java 新增对 TiDB 的支持

testcontainers-java最近增加了对TiDB的支持,允许开发者在Java应用程序中直接通过代码控制和管理TiDB的Docker容器,无需额外脚本。这极大地简化了开发流程。示例代码展示了如何创建和操作TiDBContainer,以及如何执行SQL。此外,还提供了一个示例仓库供参考。未来,PingCAP Global Community将继续改进TiDB的开发者体验,包括更多驱动和ORM的兼容性测试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 应用开发者交流专区发帖,或扫描下方二维码加入微信交流群等方式与我们联系。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值