PG语法更新与删除

构造更新与删除语句

更新和删除在构造Query时共用同一个类UpdateQuery

  • 更新时需要指定pkeyskey(kkv表)和valueMap

  • 删除时不用指定valueMap

Map<String, String> valueMap = new LinkedHashMap<String, String>();
valueMap.put("value1", "1");
valueMap.put("value2", "2");
UpdateQuery updateQuery = UpdateQuery.builder()
        .table("your_table_name")
        .pkey("your_pkey")
        .skey("your_skey")  // kv表没有skey
        .valueMap(valueMap) // 属性与值的映射表
        .build();

更新接口调用说明

更新接口

PG语法更新提供同步和异步两个接口,只支持单条Query。

  • 不支持部分字段更新

  • valueMap要求表schema中除pkey、skey外的全部字段,否则更新无效

// 同步更新接口,无返回值
public void updateSync(@NonNull UpdateSessionCtx updateSessionCtx, @NonNull UpdateQuery updateQuery)

// 异步更新接口,返回CompletableFuture
public CompletableFuture updateAsync(@NonNull UpdateSessionCtx updateSessionCtx, @NonNull UpdateQuery updateQuery)
  • 其中,UpdateSessionCtx 用来设定和记录单次查询的信息:

  • updateSessionCtx.getUpdateConfig() 用于支持一些 query 级别的定制化参数

  • updateSessionCtx.getRequestContext() 用于在更新后获得更新中的一些信息

同步更新接口

一个简单的同步更新示例

UpdateSessionCtx updateSessionCtx = new UpdateSessionCtx();
try {
    abfsClient.updateSync(updateSessionCtx, updateQuery);
} catch (Exception e) {
    log.error("update failed", e);
    return;
}

异步更新接口

一个简单的异步更新示例

CompletableFuture future;
UpdateSessionCtx updateSessionCtx = new UpdateSessionCtx();
try {
    future = abfsClient.updateAsync(updateSessionCtx, updateQuery);
} catch (Exception e) {
    log.error("update failed", e);
    return;
}

删除接口调用说明

删除接口

PG语法删除提供同步和异步两个接口,只支持单条Query。

  • kv 表只需指定 pkey 即可删除

  • kkv 表只指定 pkey,会删除 pkey 下的所有 skey 的内容

  • kkv 表指定 pkey + skey, 会删除对应的一条记录

// 同步删除接口,无返回值
public void deleteSync(@NonNull UpdateSessionCtx updateSessionCtx, @NonNull UpdateQuery updateQuery)

// 异步删除接口,返回CompletableFuture
public CompletableFuture deleteAsync(@NonNull UpdateSessionCtx updateSessionCtx, @NonNull UpdateQuery updateQuery)

同步删除接口

一个简单的同步删除示例

UpdateQuery deleteQuery = UpdateQuery.builder()
                .table("your_table_name")
                .pkey("your_pkey")
                .build();
UpdateSessionCtx updateSessionCtx = new UpdateSessionCtx();
try {
    abfsClient.deleteSync(updateSessionCtx, deleteQuery);
} catch (Exception e) {
    log.error("update failed", e);
    return;
}

异步删除接口

一个简单的异步删除示例

CompletableFuture future;
UpdateSessionCtx updateSessionCtx = new UpdateSessionCtx();
try {
    future = abfsClient.deleteSync(updateSessionCtx, deleteQuery);
} catch (Exception e) {
    log.error("update failed", e);
    return;
}

Query级别定制化参数

用户可以对每个更新或删除query 指定不同的参数,实现一些功能。定制的参数主要在updateSessionCtx.updateConfig 里,将想要设置的参数设置进updateConfig即可。

  • 定制超时时间

updateSessionCtx.getUpdateConfig().setTimeoutInMs(timeout);
  • 定时src来源

updateSessionCtx.getUpdateConfig().setSrc(src);
阿里云首页 智能推荐AIRec 相关技术圈