Data Operation:DsHint(Specify Data Source) and BatchSizeHint(Specify Batch Quantity)
Ⅰ、Scenario Description
- DsHintApi, which forces the specification of the data source,
- BatchSizeHintApi, which forces the specification of the query batch quantity
Ⅱ、API Definition
(Ⅰ) DsHintApi
public static DsHintApi model(String model/**Model Code*/) {
// Specific implementation
}
public DsHintApi(Object dsKey/**Data Source Name*/) {
// Specific implementation
}
(Ⅱ) BatchSizeHintApi
public static BatchSizeHintApi use(Integer batchSize) {
// Specific implementation
}
Ⅲ、Usage Examples
Caution
Warning:
The try-with-resources syntax is used in the code; otherwise, data source confusion may occur.
- DsHintApi Usage Example All queries wrapped inside the try block will be forced to use the specified data source.
// Usage Mode 1:
try (DsHintApi dsHintApi = DsHintApi.model(PetItem.MODEL_MODEL)) {
List<PetItem> items = demoItemDAO.customSqlDemoItem();
PetShopProxy data2 = data.queryById();
data2.fieldQuery(PetShopProxy::getPetTalents);
}
// Usage Mode 2:
try (DsHintApi dsHintApi = DsHintApi.use("Data Source Name")) {
List<PetItem> items = demoItemDAO.customSqlDemoItem();
PetShopProxy data2 = data.queryById();
data2.fieldQuery(PetShopProxy::getPetTalents);
}
- 3、BatchSizeHintApi Usage Example All queries wrapped inside the try block will be executed according to the specified batchSize.
// Specify to query 500 records each time
try (BatchSizeHintApi batchSizeHintApi = BatchSizeHintApi.use(500)) {
PetShopProxy data2 = data.queryById();
data2.fieldQuery(PetShopProxy::getPetTalents);
}
// Specify no pagination (batchSize=-1) for the query. Please note that you must use this when it is clear that pagination is not needed; if the data volume is extremely large and no pagination is used, it may cause a freeze. By default, the platform will perform pagination queries when the number of pages is not specified.
try (BatchSizeHintApi batchSizeHintApi = BatchSizeHintApi.use(-1)) {
PetShopProxy data2 = data.queryById();
data2.fieldQuery(PetShopProxy::getPetTalents);
}