如果我们希望,通过链接打开一个表单的时候,给某个数据集添加指定额外的筛选条件,可以使用筛选参数。
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
通过链接指定性别为男的配置方法。
总结:
- 参数名: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的数据列
查询列是一个数组,可以支持设置任意多个查询列。
- 普通列:例如用户的性别可以写为
table.用户.性别
- 引用列:例如用户的部门主管写为
table.用户.部门.主管
. - "*" :
"*"
表示该数据表所有的直接列,不包括间接引用的列。
二 多个查询参数组合查询
多个查询参数默认 使用and连接。 表示既满足...又满足...
1 多个参数用 and 条件连接)
- 性别是男,并且属于业务部。
两个参数:
query.ds.性别=1
query.ds.部门.名称=业务部
2 多个参数用 or 条件连接) 表示满足第一个条件或者 第二个条件 或者...
业务部的用户 或者 财务部的用户
两个参数:
query.orgroup(query.ds.部门.名称) 业务部
query.orgroup(query.ds.部门.名称) 财务部业务部的用户 或者 女性用户
query.orgroup(query.ds.部门.名称) 业务部
query.orgroup(query.ds.性别) Dict.性别.男
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年