-
Notifications
You must be signed in to change notification settings - Fork 63
5.Provider
codingPao edited this page May 14, 2021
·
5 revisions
AggProviderCollapseProviderIdProviderMultiMatchFieldProviderScoreFunctionProviderScriptFieldProviderScriptProviderScrollProviderSortProviderSourceProviderVersionProviderHighlighterProvider
排序需要实现SortProvider接口。
@Data
public class SampleRecentOrderCondition implements SortProvider {
private static final Sort[] SORTS = {
//字段升序
Sort.fieldAsc("createTime"),
//脚本降序
Sort.scriptStringDesc(Script.stored("order_script"))};
@Must
private Long cargoId;
@Override
public Sort[] getSorts() {
return new Sort[0];
}
}脚本字段需要实现ScriptFieldProvider接口。
@Data
public class SampleRecentOrderCondition implements ScriptFieldProvider {
private static final ScriptField[] SCRIPT_FIELDS = new ScriptField[]{
ScriptField.of("createTime", Script.stored("order_script"))
};
@Must
private Long cargoId;
@Override
public ScriptField[] getScriptFields() {
return new ScriptField[0];
}
}自定返回字段,可以通过两种方式实现:
实现
SourceProvider接口
public class ProductCondition implements SourceProvider {
private static final String[] INCLUDE_FIELDS = {"id", "name"};
private static final String[] EXCLUDE_FIELDS = {"label"};
/**
* 获取包含的字段列表
*
* @return 字段列表
*/
@Override
public String[] getIncludeFields() {
return INCLUDE_FIELDS;
}
/**
* 获取排除的字段列表
*
* @return 字段列表
*/
@Override
public String[] getExcludeFields() {
return EXCLUDE_FIELDS;
}
}返回值实体类型定义
@Data
public class Product {
private Long id;
private String name;
@Ignore
private String label;
}此返回值类型,说明返回的字段为:
["id", "name"]
搜索条件实现
HighlighterProvider接口
@Data
public class SampleRecentOrderCondition implements HighlighterProvider {
@Must(queryType = QueryType.MATCH)
private String loadAddress = "河北";
@Override
public HighlighterBuilder highlighterBuilder() {
return Highlighter.highlighter().addFields(Highlighter.field("loadAddress"));
}
}返回实体实现
HighlightSource接口
@Data
public class RecentOrder implements HighlightSource {
private Map<String, List<String>> highlightSource;
/**
* ebatis回调该方法传入高亮结果
* @param highlightSource 高亮结果
*/
@Override
public void setHighlightSource(Map<String, List<String>> highlightSource) {
this.highlightSource = highlightSource;
}
}