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. 目录服务地址列表,对于Docker本地版:dir地址为docker部署的机器内网ip地址,端口默认为9999;对于线上云环境,为集群连接内网地址,端口默认为9999
List<String> dirList = new ArrayList<String>();
dirList.add("tcp://localhost:9999");
// 1.2. 业务ID,接入ID,对于Docker本地版: TDR表默认为2,PB表默认为3; 对于线上云环境,根据实际创建的集群接入ID填写
int appId = 2;
// 1.3. 业务密码,对于Docker本地版:可以通过打开oms本地环境查看对应TDR业务的集群密码,业务管理->业务维护->选择TDR业务,查看集群密码; 对于线上云环境,根据自行设置的密码填写
String appPassword = "****************";
// 1.4. 表格组ID,替换为自己创建的表格组id
int tableGroupId = 4;
// 1.5. 表格名称, 替换为自己创建的表名
String tableName = "test";
// 2. 创建客户端
Client client = ClientFactory.createClient(appId, tableGroupId, appPassword, dirList);
try {
// 插入数据
insert(client, tableName);
// 获取数据
select(client, tableName);
// 修改数据
update(client, tableName);
// 删除数据
delete(client, tableName);
} finally {
// 3. 销毁客户端对象
ClientFactory.destroyClient(client);
}
}
private static void insert(Client client, String tableName) {
// 1. 构造插入数据的请求
// 1.1. 获取请求对象。为了提升SDK性能,Request对象是复用的
Request request = client.acquireRequest();
// 1.2. 设置请求类型和目标表名
request.setCmd(TcaplusProtocolCsConstants.TCAPLUS_CMD_INSERT_REQ);
request.setTableName(tableName);
// 1.3. 设置数据各字段的值,这里要注意Key字段和Value字段,使用的是不同的方法设置字段值
Record record = request.addRecord();
record.setKeyInt("gameid", 1);
record.setKeyInt("itemid", 1);
record.setKeyString("name", "test");
record.setValueByte("typeid", (byte) 1);
record.setValueByte("data", (byte) 1);
record.setValueString("uname", "test");
// 2. 发送请求,并获取结果
Response response = client.poll(request);
System.out.println(response.toString());
// 3. 处理结果
if (response.getResult() == 0) {
// 插入数据成功
// TODO 可在此处添加处理数据插入成功的后续处理代码
} else {
// 插入数据失败
// TODO 可在此处添加处理数据插入失败的后续处理代码
}
}
private static void select(Client client, String tableName) {
// 1. 构造查询数据的请求
// 1.1. 获取请求对象。为了提升SDK性能,Request对象是复用的
Request request = client.acquireRequest();
// 1.2. 设置请求类型和目标表名
request.setCmd(TcaplusProtocolCsConstants.TCAPLUS_CMD_GET_REQ);
request.setTableName(tableName);
// 1.3. 设置各个Key字段的值
Record record = request.addRecord();
record.setKeyInt("gameid", 1);
record.setKeyInt("itemid", 1);
record.setKeyString("name", "test");
// 1.4. 添加需要查询的Value字段
request.addFieldName("typeid");
request.addFieldName("data");
request.addFieldName("uname");
// 2. 发送请求,并获取结果
Response response = client.poll(request);
// 3. 处理结果
if (response.getResult() == 0) {
// 查询数据成功
Record result = response.fetchRecord();
System.out.println(result.toString());
// TODO 可在此处添加处理数据查询成功的后续处理代码
} else {
// 查询数据失败
// TODO 可在此处添加处理数据查询失败的后续处理代码
System.out.println(response.toString());
}
}
private static void update(Client client, String tableName) {
// 1. 构造更新数据的请求
// 1.1. 获取请求对象。为了提升SDK性能,Request对象是复用的
Request request = client.acquireRequest();
// 1.2. 设置请求类型和目标表名
request.setCmd(TcaplusProtocolCsConstants.TCAPLUS_CMD_UPDATE_REQ);
request.setTableName(tableName);
// 1.3. 设置各Key字段的值。说明:Key字段值是不允许更新的
Record record = request.addRecord();
record.setKeyInt("gameid", 1);
record.setKeyInt("itemid", 1);
record.setKeyString("name", "test");
// 1.4. 设置各Value字段的新值
record.setValueByte("typeid", (byte) 1);
record.setValueByte("data", (byte) 1);
record.setValueString("uname", "test");
// 2. 发送请求,并获取结果
Response response = client.poll(request);
System.out.println(response.toString());
// 3. 处理结果
if (response.getResult() == 0) {
// 更新数据成功
// TODO 可在此处添加处理数据更新成功的后续处理代码
} else {
// 更新数据失败
// TODO 可在此处添加处理数据更新失败的后续处理代码
}
}
private static void delete(Client client, String tableName) {
// 1. 构造删除数据的请求
// 1.1. 获取请求对象。为了提升SDK性能,Request对象是复用的
Request request = client.acquireRequest();
// 1.2. 设置请求类型和目标表名
request.setCmd(TcaplusProtocolCsConstants.TCAPLUS_CMD_DELETE_REQ);
request.setTableName(tableName);
// 1.3. 设置各Key字段的值
Record record = request.addRecord();
record.setKeyInt("gameid", 1);
record.setKeyInt("itemid", 1);
record.setKeyString("name", "test");
// 2. 发送请求,并获取结果
Response response = client.poll(request);
System.out.println(response.toString());
// 3. 处理结果
if (response.getResult() == 0) {
// 删除数据成功
// TODO 可在此处添加处理数据删除成功的后续处理代码
} else {
// 删除数据失败
// TODO 可在此处添加处理数据删除失败的后续处理代码
}
}
}
评论