[TDR Generic Table][Java SDK] Query Local Index
1. Interface Description
Get multiple pieces of data from the specified table according to part Key field values.
Note: Before getting data by part Key field values, create an index with the corresponding key value as the Key, otherwise an error will be reported that the index cannot be found.
2. Version Requirements
This interface is provided in all versions without special requirements.
3. Preparations
Refer to Preparation document to complete the preparation before using this interface and create the following TDR Generic table.
Get the following information after the preparation. These details will be used by the SDK:
- Directory server address list
- App ID
- App access password
- Game zone ID
- Table name
4. Example Code
Basic execution process of example code:
- Create a client;
- Create a request;
- Send a request;
- Process the response;
- Destroy the client.
4.1 Example Code for Synchronous Call
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. Prepare the environment information
// 1.1. Directory server address list
List<String> dirList = new ArrayList<String>();
dirList.add("tcp://x.x.x.x:9999");
dirList.add("tcp://y.y.y.y:9999");
// 1.2. App ID
int appId = 1;
// 1.3. App password
String appPassword = "****************";
// 1.4. Table group ID
int tableGroupId = 1;
// 1.5. Table name
String tableName = "test";
// 2. Create a client
Client client = ClientFactory.createClient(appId, tableGroupId, appPassword, dirList);
try {
// 3. Construct a request to read data according to the value of partial Key fields
// 3.1. Get the request object. In order to improve the SDK's performance, the Request object is reused
Request request = client.acquireRequest();
// 3.2. Set the request type and target table name
request.setCmd(TcaplusProtocolCsConstants.TCAPLUS_CMD_GET_BY_PARTKEY_REQ);
request.setTableName(tableName);
// 3.3. Set the value of partial Key fields The complete Key in this sample consists of three fields, but only one of them needs to be specified during the query.
Record record = request.addRecord();
record.setKeyInt("gameid", 1);
// 3.4. Add the Value field to be read
request.addFieldName("typeid");
request.addFieldName("Data");
request.addFieldName("uname");
// 3.5. If it is set, only the number data starting from offset in the result list will be returned. If it is not set, all the data that meets the conditions will be returned
int offset = 0;
int number = 100;
request.setPartkeyGetParam(offset, number);
// 4. Send a request and get the result
Response response = client.poll(request);
// 5. Process the result
if (response.getResult() == 0) {
// Data reading successful
Record result;
while ((result = response.fetchRecord()) != null) {
// TODO: add the code to process the result of data reading successful here
}
} else {
// Data reading failure
// TODO: add the code to process the result of data reading failure here
}
} finally {
// 6. Destroy the client object
ClientFactory.destroyClient(client);
}
}
}
4.2 Example Code for Asynchronous Call
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. Prepare the environment information
// 1.1. Directory server address list
List<String> dirList = new ArrayList<String>();
dirList.add("tcp://x.x.x.x:9999");
dirList.add("tcp://y.y.y.y:9999");
// 1.2. App ID
int appId = 1;
// 1.3. App password
String appPassword = "****************";
// 1.4. Table group ID
int tableGroupId = 1;
// 1.5. Table name
String tableName = "test";
// 2. Create a client
Client client = ClientFactory.createClient(appId, tableGroupId, appPassword, dirList);
try {
// 3. Construct a request to read data according to the value of partial Key fields
// 3.1. Get the request object. In order to improve the SDK's performance, the Request object is reused
Request request = client.acquireRequest();
// 3.2. Set the request type and target table name
request.setCmd(TcaplusProtocolCsConstants.TCAPLUS_CMD_GET_BY_PARTKEY_REQ);
request.setTableName(tableName);
// 3.3. Set the value of partial Key fields The complete Key in this sample consists of three fields, but only one of them needs to be specified during the query.
Record record = request.addRecord();
record.setKeyInt("gameid", 1);
// 3.4. Add the Value field to be read
request.addFieldName("typeid");
request.addFieldName("Data");
request.addFieldName("uname");
// 3.5. If it is set, only the number data starting from offset in the result list will be returned. If it is not set, all the data that meets the conditions will be returned
int offset = 0;
int number = 100;
request.setPartkeyGetParam(offset, number);
CountDownLatch latch = new CountDownLatch(1);
// 4. Send the request asynchronously and specify the processor that returns the response. The post method will return the result immediately
client.post(request, new Future() {
@Override
public void onResponse(Response response) {
// 5. Process the response
if (response.getResult() == 0) {
// Data getting success
// TODO: add the subsequent processing code of successful data getting here
} else {
// Data getting failure
// TODO: add the subsequent processing code of failed data getting here
}
}
});
latch.await();
} finally {
// 6. Destroy the client object
ClientFactory.destroyClient(client);
}
}
}
5. Method Description in Request Object
Note: If there is an unlisted Request object method, it means that the method is invalid in the scenario of getting data according to part Key field values.
| Method signature | Method description |
|---|---|
void setCmd(int cmd) |
Set the request type (command). cmd: request type, fixed to TcaplusProtocolCsConstants.TCAPLUS_CMD_GET_BY_PARTKEY_REQ. |
void setTableName(String tableName) |
Set the target table name. TableName: target table name, which cannot be null. |
Record addRecord() |
Get the data object (Record), which is used to set the key of the read data. The user can call the getValueXXX method of the object to obtain the Value of each value field. |
void addFieldName(String fieldName) |
Add the name of the Value field of the data to be queried. fieldName: field name, which cannot be null. |
void setPartkeyGetParam(int offset, int num) |
If it is set, only the number data starting from offset in the result list will be returned. If it is not set, all the data that meets the conditions will be returned. Offset: the starting position. Num: the maximum number of returned data. |
5.1. Method Description in Request Data Object
Note: If there is an unlisted Record object method, it means that the method is invalid in the scenario of getting data according to part Key field values.
| Method signature | Method description |
|---|---|
void setVersion(int version) |
Set the version number of the data. Version: if it is set to a negative number, it means that version control is not started for the current data. |
void setKeyByte(String fieldName, byte value) |
Set the value of the Key field for the specified name. Note: This method can only be called to set the field value when the field type defined in the TDR table description file corresponds to the Java byte type. Otherwise, the server will report parameter errors when processing the request. See Relationship between TDR Table Field Types and Java Types. fieldName: field name, which cannot be null. Value: the new value of the field. |
void setKeyShort(String fieldName, short value) |
Set the value of the Key field for the specified name. Note: This method can only be called to set the field value when the field type defined in the TDR table description file corresponds to the Java short type. Otherwise, the server will report parameter errors when processing the request. See Relationship between TDR Table Field Types and Java Types. fieldName: field name, which cannot be null. Value: the new value of the field. |
void setKeyInt(String fieldName, int value) |
Set the value of the Key field for the specified name. Note: This method can only be called to set the field value when the field type defined in the TDR table description file corresponds to the Java int type. Otherwise, the server will report parameter errors when processing the request. See Relationship between TDR Table Field Types and Java Types. fieldName: field name, which cannot be null. Value: the new value of the field. |
void setKeyLong(String fieldName, long value) |
Set the value of the Key field for the specified name. Note: This method can only be called to set the field value when the field type defined in the TDR table description file corresponds to the Java long type. Otherwise, the server will report parameter errors when processing the request. See Relationship between TDR Table Field Types and Java Types. fieldName: field name, which cannot be null. Value: the new value of the field. |
void setKeyFloat(String fieldName, float value) |
Set the value of the Key field for the specified name. Note: This method can only be called to set the field value when the field type defined in the TDR table description file corresponds to the Java float type. Otherwise, the server will report parameter errors when processing the request. See Relationship between TDR Table Field Types and Java Types. fieldName: field name, which cannot be null. Value: the new value of the field. |
void setKeyDouble(String fieldName, double value) |
Set the value of the Key field for the specified name. Note: This method can only be called to set the field value when the field type defined in the TDR table description file corresponds to the Java double type. Otherwise, the server will report parameter errors when processing the request. See Relationship between TDR Table Field Types and Java Types. fieldName: field name, which cannot be null. Value: the new value of the field. |
void setKeyString(String fieldName, String value) |
Set the value of the Key field for the specified name. Note: This method can only be called to set the field value when the field type defined in the TDR table description file corresponds to the Java String type. Otherwise, the server will report parameter errors when processing the request. See Relationship between TDR Table Field Types and Java Types. fieldName: field name, which cannot be null. Value: the new value of the field. |
void setKeyBlob(String fieldName, byte[] value) |
Set the value of the Key field for the specified name. Note: This method can only be called to set the field value when the field type defined in the TDR table description file corresponds to the Java[]. Otherwise, the server will report parameter errors when processing the request. See Relationship between TDR Table Field Types and Java Types. fieldName: field name, which cannot be null. Value: the new value of the field. |
6. Method Description in Response Object
Note: If there is an unlisted Response object method, it means that the method is invalid in the scenario of getting data according to part Key field values.
| Method signature | Method description |
|---|---|
int getResult() |
Get the response code of the data read request according to some Key field values. 0 indicates that the operation succeeds. If the value is not 0, the operation is abnormal. Common error codes include: 261: The data record does not exist. See Response Code Meaning Description. |
List<Record> getRecordList() |
Get the list of data objects returned from reading. The user can call the getValueXXX method of the object to obtain the Value of each value field. |
6.1. Method Description in Response Data Object
Note: If there is an unlisted Record object method, it means that the method is invalid in the scenario of getting data according to part Key field values.
| Method signature | Method description |
|---|---|
int getVersion() |
Get the version number of the data. |
int getValueCount() |
Get the number of Value fields of the data. |
byte getValueByte(String fieldName) |
Get the Value of the value field of the specified name. fieldName: field name, which cannot be null. |
short getValueShort(String fieldName) |
Get the Value of the value field of the specified name. fieldName: field name, which cannot be null. |
int getValueInt(String fieldName) |
Get the Value of the value field of the specified name. fieldName: field name, which cannot be null. |
long getValueLong(String fieldName) |
Get the Value of the value field of the specified name. fieldName: field name, which cannot be null. |
float getValueFloat(String fieldName) |
Get the Value of the value field of the specified name. fieldName: field name, which cannot be null. |
double getValueDouble(String fieldName) |
Get the Value of the value field of the specified name. fieldName: field name, which cannot be null. |
String getValueString(String fieldName) |
Get the Value of the value field of the specified name. fieldName: field name, which cannot be null. |
byte[] getValueBlob(String fieldName) |
Get the Value of the value field of the specified name. fieldName: field name, which cannot be null. |
7. FAQ
For details, see Meaning and Handling of Error Codes.
8. Other Reference Documents
[[TDR Generic Table][C++ SDK] Interface Description for Querying Local Index](../../01C++_SDK/02Interface_Documents/06[Generic_Table]Query_Local_Index.md
[TDR Generic Table] [Go SDK] Interface Description for Querying Local Index.