如果我们希望,通过链接打开一个表单的时候,给某个数据集添加指定额外的筛选条件,可以使用筛选参数。


1.筛选参数(判断相等)

例如数据集ds是用户的数据集,需要增加筛选条件性别为男(值为1),那么可以在链接中加入参数如下:
?query.ds.用户.性别=1
例如用户管理的url是:
http://localhost/misshop/index.jsp#cGFnZS_ns7vnu5_nrqHnkIYv55So5oi3566h55CG
那么可以通过如下条件,查看都是男性的用户。
http://localhost/misshop/index.jsp?query.ds.%E6%80%A7%E5%88%AB=1#cGFnZS_ns7vnu5_nrqHnkIYv55So5oi3566h55CG

特殊参数 - 参数指定额外筛选条件 - 图1 通过链接指定性别为男的配置方法。

总结:

  • 参数名:query.数据集名称.字段名称。
  • 参数值:判断是否相等的值。

2.筛选参数(判断不等)

  • 名称不是张三
    query.ds.名称.neq=张三 或者 query.ds.名称.不等于=张三

3.筛选参数(判断为空)

  • 名称为空
    query.ds.名称.isnull=true
  • 名称不空
    query.ds.名称.isnull=false

4.筛选参数(其他大于小于比较符)

  • id大于3
    query.ds.id.gt=3 或者 query.ds.id.大于=3
  • id小于3
    query.ds.id.lt=3 或者 query.ds.id.小于=3
  • id小于等于3(不小于3)
    query.ds.id.nlt=3 或者 query.ds.id.小于=3
  • id大于等于3(不大于)
    query.ds.id.ngt=3 或者 query.ds.id.小于=3

5.筛选参数(特殊比较符like 和 in )

  • 名称 包含 张三
    query.ds.名称.like=张三
  • id 在某数组中 [1,3,4]
    query.ds.id.in=[1,3,4]
  • id 不在某数组中 [1,3,4]
    query.ds.id.notin=[1,3,4]

二.使用引用列查询,或者列表中不存在的数据列

部门的名称包含 业务
query.ds.部门.名称.like=业务

部门的部长的名称是admin
query.ds.部门.部长.名称=admin

部门的部长的名称包含 张
query.ds.部门.部长.名称.like=张

使用额外查询参数的时候需要注意,特别是引用列的时候,如果查询列在被查询的列表页中没有出现的话,那么查询会报错,这个数据列不存在,这时候需要设置ds的数据列
特殊参数 - 参数指定额外筛选条件 - 图2

查询列是一个数组,可以支持设置任意多个查询列。

  • 普通列:例如用户的性别可以写为 table.用户.性别
  • 引用列:例如用户的部门主管写为 table.用户.部门.主管.
  • “ :`”“` 表示该数据表所有的直接列,不包括间接引用的列。

二 多个查询参数组合查询

多个查询参数默认 使用and连接。 表示既满足…又满足…


1 多个参数用 and 条件连接)

  • 性别是男,并且属于业务部。
    两个参数:
    query.ds.性别=1
    query.ds.部门.名称=业务部

2 多个参数用 or 条件连接) 表示满足第一个条件或者 第二个条件 或者…

  • 业务部的用户 或者 女性用户
    query.orgroup(query.ds.部门.名称) 业务部
    query.orgroup(query.ds.性别) Dict.性别.男

注意,如上例所示,因为查询条件中参数名不能相同,所以如果是同一个字段的or条件,需要这样使用:

业务部的用户 或者 财务部的用户
两个参数:
query.orgroup(query.ds.部门.名称,”A组”,”A1”) 业务部
query.orgroup(query.ds.部门.名称,”A组”,”A2”) 财务部

表示A组里的两个用or连接。

2 多个参数用 or 组合,剩余的用and组合

3.多个参数用 or 组合,剩余的用and组合

  • 业务部的用户 或者 财务部的用户, 并且这些用户性别为男,生日在1900年后。
    query.orgroup(query.ds.部门.名称) 业务部
    query.orgroup(query.ds.部门.名称) 财务部
    query.ds.性别 Dict.性别.男
    query.ds.生日.gt Date.create(1900,1,1)

4.多组or 组合的条件。也就是 (A组条件1 或者 A组条件2 或者 A组条件3…) 并且满足 ( B组条件1 或者 B组条件2…)

query.orgroup 中如果有第二个参数,表示分组。相同分组参数的条件,会用or 组合在一起。

例如要查询 部门为办公室或者安监部,并且角色为 员工或者部门管理员的 用户。

query.orgroup(query.ds.部门.名称,“A组” ) 办公室
query.orgroup(query.ds.部门.名称,“A组” ) 安监部

query.orgroup(query.ds.角色.名称,“B组” ) 员工
query.orgroup(query.ds.角色.名称,“B组” ) 部门管理员

部门为办公室或者安监部,并且角色为 员工或者部门管理员的 男性用户。

query.orgroup(query.ds.部门.名称,“A组” ) 办公室
query.orgroup(query.ds.部门.名称,“A组” ) 安监部

query.orgroup(query.ds.角色.名称,“B组” ) 员工
query.orgroup(query.ds.角色.名称,“B组” ) 部门管理员
query.ds.性别 Dict.性别.男

5.每个 or 组合的条件是and组成的。

例如要查询 业务部的男性成员或者财务部的女性成员 并且满足角色为 员工或者部门管理员的 生日大于1900年的用户

orgroup的第三个参数,表示小组,所有具有相同的小组的条件用and组合起来作为 这个or组的一个条件。

query.orgroup(query.ds.部门.名称,”A组”,”业务男性”,) 业务部
query.orgroup(query.ds.性别,”A组”,”业务男性”) 男

query.orgroup(query.ds.部门.名称,”A组”,”财务女性”) 财务部
query.orgroup(query.ds.性别,”A组”,”财务女性”) 女

这4条组合出第一个or 条件。 业务部男性 或者 财务部的女性。

query.orgroup(query.ds.角色.名称,“B组” ) 员工
query.orgroup(query.ds.角色.名称,“B组” ) 部门管理员

这2条组合出第二个or 条件。 角色为员工或者部门管理员。 query.ds.生日.gt Date.create(1900,1,1)

所有合起来就是
业务部男性 或者 财务部的女性 并且
角色为员工或者部门管理员 并且
生日晚于 1900年