PG语法更新与删除
构造更新与删除语句
更新和删除在构造Query时共用同一个类UpdateQuery
。
更新时需要指定
pkey
、skey
(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);