in java/core/src/main/java/com/aliyun/openservices/tablestore/agent/util/TablestoreHelper.java [596:620]
public static <T> List<T> batchGetRow(SyncClient client, String tableName, List<PrimaryKey> primaryKeys, Function<Row, T> translateFunction) {
MultiRowQueryCriteria multiRowQueryCriteria = new MultiRowQueryCriteria(tableName);
for (PrimaryKey rowChange : primaryKeys) {
multiRowQueryCriteria.addRow(rowChange);
}
multiRowQueryCriteria.setMaxVersions(1);
List<String> errorDetails = new ArrayList<>();
try {
BatchGetRowRequest batchGetRowRequest = new BatchGetRowRequest();
batchGetRowRequest.addMultiRowQueryCriteria(multiRowQueryCriteria);
BatchGetRowResponse batchGetRowResponse = client.batchGetRow(batchGetRowRequest);
if (!batchGetRowResponse.isAllSucceed()) {
for (BatchGetRowResponse.RowResult rowResult : batchGetRowResponse.getFailedRows()) {
PrimaryKey primaryKey = batchGetRowRequest.getPrimaryKey(rowResult.getTableName(), rowResult.getIndex());
errorDetails.add(String.format("failed pk:[%s], failed msg:[%s]", primaryKey.jsonize(), rowResult.getError().getMessage()));
}
throw Exceptions.runtime(String.format("batch get row failed, error details:%s", errorDetails));
}
return batchGetRowResponse.getSucceedRows().stream().map(r -> translateFunction.apply(r.getRow())).collect(Collectors.toList());
} catch (Exception e) {
throw Exceptions.runtimeThrowable("batch get row failed", e);
}
}