public class SchemeFilterBuilder extends Object
| 构造器和说明 |
|---|
SchemeFilterBuilder(GridVO gridVO,
Map<String,Object> paramMap)
构造函数
|
| 限定符和类型 | 方法和说明 |
|---|---|
String |
build()
构建SQL查询语句
该函数根据当前对象的配置参数(包括方案、权限、查询条件、关键字和排序规则)动态构建完整的SQL查询语句。
|
String |
buildAll()
构建完整的查询方案
该方法依次执行以下操作:
1.
|
SchemeFilterBuilder |
clear()
清空查询条件
该方法会清空以下内容:
排序条件(orderMap)
过滤条件(conditionMap)
方案内容(schemeBuilder)
关键字列表(keywordsNameList)
权限语句(powerBuilder)
|
SchemeFilterBuilder |
clearCondition()
清空筛选条件
|
SchemeFilterBuilder |
clearKeywords()
清空关键字列表
|
SchemeFilterBuilder |
clearOrderBy()
清空排序条件。
|
SchemeFilterBuilder |
clearPower()
清空查询范围。
|
SchemeFilterBuilder |
clearScheme()
清空方案
|
SchemeFilterBuilder |
filter()
创建筛选条件构建器
|
SchemeFilterBuilder |
filter(ConditionVO... conditions)
构建筛选条件,支持从参数传入或从paramMap中解析
处理逻辑:
1.
|
Map<String,Object> |
getParamMap()
获取参数数据
|
SchemeFilterBuilder |
keywords()
关键字查询功能,根据gridVO中的关键字过滤条件构建筛选器。
|
SchemeFilterBuilder |
keywords(String... keywords)
关键字生成
|
SchemeFilterBuilder |
orderBy()
数据排序
|
SchemeFilterBuilder |
orderBy(String defaultField,
String defaultOrder)
数据排序,根据不同条件设置排序字段和排序方式
排序优先级:
优先使用传入的默认排序字段和方式
其次使用参数中的sort和order字段
最后使用GridPropertyVO中第一个可排序字段
如果以上都没有,则默认按id降序排序
|
SchemeFilterBuilder |
power(String powerField)
限定查看数据范围,根据权限类型过滤数据
|
SchemeFilterBuilder |
scheme()
创建一个默认空字符串的Scheme过滤器构建器。
|
SchemeFilterBuilder |
scheme(com.alibaba.fastjson.JSONObject config)
筛选方案
|
SchemeFilterBuilder |
scheme(String scheme)
筛选方案
根据传入的方案名称或参数映射中的方案名称,查找对应的查询方案配置,
并生成SQL查询条件追加到当前构建器中。
|
String |
toString()
构建SQL语句
|
@Comment(value="\u9650\u5b9a\u67e5\u770b\u6570\u636e\u8303\u56f4") public SchemeFilterBuilder power(String powerField) throws TokenAuthenticationException, BusiException, SQLException
powerField - 权限字段名,用于SQL查询中指定需要过滤的字段TokenAuthenticationException - 当令牌认证失败时抛出BusiException - 当业务处理异常时抛出SQLException - 当SQL操作异常时抛出@Comment(value="\u83b7\u53d6\u53c2\u6570\u6570\u636e") public Map<String,Object> getParamMap()
@Comment(value="\u6e05\u7a7a\u67e5\u8be2\u6761\u4ef6") public SchemeFilterBuilder clear()
该方法会清空以下内容:
@Comment(value="\u6e05\u7a7a\u6392\u5e8f") public SchemeFilterBuilder clearOrderBy()
@Comment(value="\u6e05\u7a7a\u7b5b\u9009\u6761\u4ef6") public SchemeFilterBuilder clearCondition()
@Comment(value="\u6e05\u7a7a\u65b9\u6848") public SchemeFilterBuilder clearScheme()
@Comment(value="\u6e05\u7a7a\u67e5\u8be2\u8303\u56f4") public SchemeFilterBuilder clearPower()
@Comment(value="\u6e05\u7a7a\u5173\u952e\u5b57") public SchemeFilterBuilder clearKeywords()
public SchemeFilterBuilder scheme()
@Comment(value="\u7b5b\u9009\u65b9\u6848") public SchemeFilterBuilder scheme(@Comment(value="\u65b9\u6848\u540d\u79f0") String scheme)
scheme - 方案名称,如果为空则尝试从paramMap中获取"scheme"值@Comment(value="\u7b5b\u9009\u65b9\u6848") public SchemeFilterBuilder scheme(@Comment(value="\u65b9\u6848\u914d\u7f6e") com.alibaba.fastjson.JSONObject config)
config - 方案配置,用于构建筛选条件的JSON对象@Comment(value="\u6570\u636e\u6392\u5e8f") public SchemeFilterBuilder orderBy()
@Comment(value="\u6570\u636e\u6392\u5e8f") public SchemeFilterBuilder orderBy(@Comment(value="\u9ed8\u8ba4\u6392\u5e8f\u5b57\u6bb5") String defaultField, @Comment(value="\u9ed8\u8ba4\u6392\u5e8f\u65b9\u5f0f") String defaultOrder)
排序优先级:
defaultField - 默认排序字段,如果为空则尝试其他排序方式defaultOrder - 默认排序方式,默认为"asc"(升序),可选"desc"(降序)@Comment(value="\u7b5b\u9009\u6761\u4ef6") public SchemeFilterBuilder filter()
@Comment(value="\u7b5b\u9009\u6761\u4ef6") public SchemeFilterBuilder filter(@Comment(value="\u7b5b\u9009\u6761\u4ef6") ConditionVO... conditions)
处理逻辑: 1. 优先使用传入的conditions参数作为筛选条件 2. 当conditions为空时,尝试从paramMap的"filter"字段解析JSON格式的条件 3. 过滤掉无效条件(字段名为空或值为空且比较符不是EMPTY/NOT_EMPTY) 4. 为未设置比较符的条件自动补充字段默认比较符
conditions - 可变参数形式的筛选条件集合@Comment(value="\u6784\u5efaSQL") public String toString()
public String buildAll()
该方法依次执行以下操作: 1. 筛选字段查询 2. 方案查询 3. 生成关键字查询 4. 排序处理 5. 最终生成SQL语句
@Comment(value="\u6784\u5efaSQL") public String build()
该函数根据当前对象的配置参数(包括方案、权限、查询条件、关键字和排序规则)动态构建完整的SQL查询语句。
处理逻辑包括:
@Comment(value="\u5173\u952e\u5b57\u67e5\u8be2") public SchemeFilterBuilder keywords()
具体逻辑: 1. 检查gridVO及其filter和keywords是否存在,若不存在则直接返回当前对象。 2. 将gridVO中的属性转换为Map以便快速查找。 3. 遍历所有关键字字段名,若不在keywordsNameList中则添加。
@Comment(value="\u5173\u952e\u5b57\u751f\u6210") public SchemeFilterBuilder keywords(@Comment(value="\u5173\u952e\u5b57") String... keywords)
keywords - 关键字数组,用于添加到关键字列表中(去重后添加)Copyright © 2025. All rights reserved.