【TcaplusDB知识库】[Generic表]根据部分Key字段值读取数据示例代码
准备工作
参见章节: 准备工作。
示例代码
注意:按部分Key字段值读取数据之前,先要创建以对应键值为Key的索引,否则会报找不到索引的错误。参考定义索引。
示例代码
import com.tencent.tcaplus.client.Client;
import com.tencent.tcaplus.client.ClientFactory;
import com.tencent.tcaplus.client.Record;
import com.tencent.tcaplus.client.Request;
import com.tencent.tcaplus.client.Response;
import com.tencent.tdr.tcaplus_protocol_cs.TcaplusProtocolCsConstants;
import java.util.ArrayList;
import java.util.List;
public class Example {
public static void main(String[] arguments) {
// 1. 准备环境信息
// 1.1. 目录服务地址列表
List<String> dirList = new ArrayList<String>();
dirList.add("tcp://x.x.x.x:9999");
dirList.add("tcp://y.y.y.y:9999");
// 1.2. 业务ID
int appId = 1;
// 1.3. 业务密码
String appPassword = "****************";
// 1.4. 表格组ID
int tableGroupId = 1;
// 1.5. 表格名称
String tableName = "test";
// 2. 创建客户端
Client client = ClientFactory.createClient(appId, tableGroupId, appPassword, dirList);
try {
// 3. 构造根据部分Key字段值读取数据的请求
// 3.1. 获取请求对象。为了提升SDK性能,Request对象是复用的
Request request = client.acquireRequest();
// 3.2. 设置请求类型和目标表名
request.setCmd(TcaplusProtocolCsConstants.TCAPLUS_CMD_GET_BY_PRRTKEY_RES);
request.setTableName(tableName);
// 3.3. 设置部分Key字段的值。本例中完整的Key由3个字段构成,但查询的时候只指定其中一个字段
Record record = request.addRecord();
record.setKeyInt("gameid", 1);
// 3.4. 添加需要读取的Value字段
request.addFieldName("typeid");
request.addFieldName("Data");
request.addFieldName("uname");
// 3.5. 设置只返回结果列表中从offset开始的number个数据,不设置即返回所有满足条件的数据
int offset = 0;
int number = 100;
request.setPartkeyGetParam(offset, number);
// 4. 发送请求,并获取结果
Response response = client.poll(request);
// 5. 处理结果
if (response.getResult() == 0) {
// 读取数据成功
Record result;
while ((result = response.fetchRecord()) != null) {
// TODO 可在此处添加数据读取成功的后续处理代码
}
} else {
// 读取数据失败
// TODO 可在此处添加数据读取失败的后续处理代码
}
} finally {
// 6. 销毁客户端对象
ClientFactory.destroyClient(client);
}
}
}
TcaplusDB是腾讯出品的分布式NoSQL数据库,存储和调度的代码完全自研。具备缓存+落地融合架构、PB级存储、毫秒级时延、无损水平扩展和复杂数据结构等特性。同时具备丰富的生态、便捷的迁移、极低的运维成本和五个九高可用等特点。客户覆盖游戏、互联网、政务、金融、制造和物联网等领域。