Skip to main content

高级搜索

1 说明

1.高级检索的设计理念,其实是对常规 sql 查询语法的一种归纳、概括,熟悉 sql 查询语法的用户应该能够很快地上手该元件的配置。

与 sql 查询语法的对照关系如下所示:

sql配置
select sum(t1.field1) as sumNum, t2.field5
from t1
left join t2 on t2.id = t1.id
where t1. field3 = 'xxx' and t2. field4 like '%abc%'
group by t2.field5
order by t2.field5 desc
limit 0,10

2.配置

主实体&主实体别名

主实体,用于从领域模型中选择一个实体,来当作本次高级搜索的中心实体。

主实体别名,给选择好的实体起一个名字,方便后续在选实体属性的地方,区分这个属性究竟来自哪个实体。

这里以【用户】作为主实体。

关联实体

可以为本次查询,添加关联实体,前提是该关联实体与前面已选择的实体之间有关联关系。

这里以【应用角色】作为关联实体,使用的是【用户角色关系】关联关系。

过滤条件

可以根据上面所有已经选择好的主实体、关联实体,针对它们的实体属性,来添加过滤条件,即对数据进行筛选。

查询

因为上面已经选择好了主实体,关联实体,但是我们有时候不希望获取到它们所有的属性,这个时候,就可以选择我们需要的属性来获取,即作为查询属性。

函数

函数表示对该属性做一些计算,然后再返回数据,支持的函数如下:

函数说明
最大值可以单独使用,也可以配合分组使用,用于计算当前全量数据、分组数据中,该属性的最大值。
最小值可以单独使用,也可以配合分组使用,用于计算当前全量数据、分组数据中,该属性的最小值。
计数可以单独使用,也可以配合分组使用,用于计算当前全量数据、分组数据中,该属性的行数。
求和可以单独使用,也可以配合分组使用,用于计算当前全量数据、分组数据中,该属性的累加值,该属性必须是数字类型。
平均数可以单独使用,也可以配合分组使用,用于计算当前全量数据、分组数据中,该属性的平均数,该属性必须是数字类型。
返回当前属性代表的年份,当前属性必须是日期时间类型
返回当前属性代表的月份,当前属性必须是日期时间类型
返回当前属性在一年中代表的天数,当前属性必须是日期时间类型

分组

分组,会根据上述过滤条件查询出来的数据,按照分组属性,把具有相同分组属性值的数据,归为一组。

一般在对数据需要做一些统计工作时,会用到分组,且分组通常会配合聚合函数使用,聚合函数在查询的函数中会有体现。

上述配置就会根据用户表的是否删除字段,做分组。从通常业务上来看,一般会分为两组数据,一组是已删除数据,一组是未删除数据。

排序

用于对根据上述过滤条件、分组条件查询出来的数据做排序,可以根据不同的排序属性以及排序类型做排序。

上述配置就会根据用户表的共工 id 做降序排序。

范围

范围一般是用于做分页需求。

比如前端需要第一页的数据,前端会传页码=1,数据条数=10 到后端。

这个时候,就需要在该配置项中的跳过记录数填 0,在返回记录数中填 10。

具体的公式如下:

跳过记录数 = (页码 - 1) * 数据条数

返回记录数 = 数据条数

是否去重

如果您发现最后查询出来的数据,有重复的情况,就可以使用该配置。

该配置项打开,就会对查询出来的数据做去除重复行的操作。

分页依据

如果该元件查询出来的总条数是用于前端分页的准确依据,则可以打开该配置。

一般而言,一条逻辑中,只会有一个元件打开该配置项。

该配置项通常与范围一起使用。

返回类型

用于表明上述查询出来的数据,将映射成何种数据类型。

实体

当返回类型选择实体或者实体集合时,需要额外指明具体的实体类型。

变量名称

用于表明,在把对该查询返回数据的使用权放置到执行流中去后,后续元件如何精准使用到该数据,即给该数据起个名字。