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