使用适用于 RDS 数据 API 的 Java 客户端库 - Amazon Aurora
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用适用于 RDS 数据 API 的 Java 客户端库

您可以下载并使用适用于 RDS 数据 API(数据 API)的 Java 客户端库。此 Java 客户端库提供了使用数据 API 的另一种方法。使用该库,您可以将客户端类映射到数据 API 的请求和响应。这种映射支持可以简化与某些特定 Java 类型(如 DateTimeBigDecimal)的集成。

下载适用于 Data API 的 Java 客户端库

Data API Java 客户端库是 GitHub 中是开源的,位于以下位置:

https://github.com/awslabs/rds-data-api-client-library-java

您可以从源文件手动构建该库,但最佳实践是使用 Apache Maven 依赖项管理来使用该库。将以下依赖项添加到 Maven POM 文件中。

对于与 Amazon SDK 2.x 兼容的版本 2.x,请使用以下命令:

<dependency> <groupId>software.amazon.rdsdata</groupId> <artifactId>rds-data-api-client-library-java</artifactId> <version>2.0.0</version> </dependency>

对于与 Amazon SDK 1.x 兼容的版本 1.x,请使用以下命令:

<dependency> <groupId>software.amazon.rdsdata</groupId> <artifactId>rds-data-api-client-library-java</artifactId> <version>1.0.8</version> </dependency>

Java 客户端库示例

在下面,您可以找到一些使用 Data API Java 客户端库的常见示例。这些示例假设您有一个包含两列(accountIdname)的表 accounts。您还拥有以下数据传输对象 (DTO)。

public class Account { int accountId; String name; // getters and setters omitted }

该客户端库使您可以将 DTO 作为输入参数进行传递。以下示例演示了如何将客户 DTO 映射到输入参数集。

var account1 = new Account(1, "John"); var account2 = new Account(2, "Mary"); client.forSql("INSERT INTO accounts(accountId, name) VALUES(:accountId, :name)") .withParamSets(account1, account2) .execute();

在某些情况下,使用简单值作为输入参数会更容易。可以使用以下语法来做到这一点。

client.forSql("INSERT INTO accounts(accountId, name) VALUES(:accountId, :name)") .withParameter("accountId", 3) .withParameter("name", "Zhang") .execute();

下面是另一个使用简单值作为输入参数的示例。

client.forSql("INSERT INTO accounts(accountId, name) VALUES(?, ?)", 4, "Carlos") .execute();

当返回结果时,客户端库提供到 DTO 的自动映射。以下示例演示了如何将结果映射到您的 DTO。

List<Account> result = client.forSql("SELECT * FROM accounts") .execute() .mapToList(Account.class); Account result = client.forSql("SELECT * FROM accounts WHERE account_id = 1") .execute() .mapToSingle(Account.class);

在很多情况下,数据库结果集只包含一个值。为了简化检索此类结果的过程,客户端库提供了以下 API:

int numberOfAccounts = client.forSql("SELECT COUNT(*) FROM accounts") .execute() .singleValue(Integer.class);
注意

mapToList 函数将 SQL 结果集转换为用户定义的对象列表。我们不支持在对 Java 客户端库的 ExecuteStatement 调用中使用 .withFormatRecordsAs(RecordsFormatType.JSON) 语句,因为它具有相同的目的。有关更多信息,请参阅 处理 JSON 格式的 Amazon RDS 数据 API 查询结果