查询过滤器用法 - xinwu-yang/cube-java GitHub Wiki
查询过滤器可以帮助快速生成查询条件,不需要编码通过配置实现,支持模糊查询、匹配查询、范围查询、不匹配查询等规则。
页面查询字段,需跟后台Controller中Page的字段对应一致,后台不需写代码自动生成查询条件SQL; 默认查询条件是全匹配,想实现模糊查询需求在查询值的前后加: *;
[1].全匹配查询:查询数据没有特殊格式,默认为全匹配查询 [2].模糊查询:查询数据格式需加星号:{ * } 例如:
格式一: 张* (后模糊匹配)
格式二: *张 (前模糊匹配)
格式三: *张* (全模糊匹配
格式四: *张*三* (更高级匹配)
[3].包含查询:查询数据格式采用逗号分隔:{ , } 例如:
格式: 张三,李四
含义: column_name IN ('张三', '李四')
[4].不匹配查询:查询数据格式需要加叹号前缀:{ ! } 例如:
格式: !张三
含义: column_name != '张三'
特殊说明:查询不为Null的语法:!null(大小写没关系);
查询不为空字符串的方法:!(只有一个叹号);
[5].范围查询,支持数字,时间的范围查询,针对范围查询页面会生成两个查询控件
1. 如果是单一匹配方式,则页面查询控件的name, 跟实体字段命名一样
2. 如果是范围匹配方式,则页面查询控件需要变成两个分别名 {*}_begin,{*}_end
{*}_begin: 表示查询范围开始值
{*}_end: 表示查询范围结束值
举例:
字段名称 orderDate
查询开始时间 : orderDate_begin
查询结束时间 : orderDate_end
- 页面实现查询条件
在线列表的查询区域,增加需要的查询字段,如下图所示。
效果:
- Controller层处理
Controller中对应的处理逻辑中追加如下代码:
QueryWrapper<?> queryWrapper = QueryGenerator.initQueryWrapper(?, req.getParameterMap());
代码示例:
@DictMethod
@GetMapping("/list")
@PermissionData("system/TenantList")
public Result<IPage<SysTenant>> queryPageList(SysTenant sysTenant, @RequestParam(defaultValue = "1") Integer pageNo, @RequestParam(defaultValue = "10") Integer pageSize, HttpServletRequest req) {
QueryWrapper<SysTenant> queryWrapper = QueryGenerator.initQueryWrapper(sysTenant, req.getParameterMap());
Page<SysTenant> page = new Page<>(pageNo, pageSize);
IPage<SysTenant> pageList = sysTenantService.page(page, queryWrapper);
return Result.ok(pageList);
}
查询模式 | 用法 | 说明 |
---|---|---|
模糊查询 | 支持左右模糊和全模糊 需要在查询输入框内前或后带或是前后全部带 | |
取非查询 | 在查询输入框前面输入! 则查询该字段不等于输入值的数据 | 数值类型不支持此种查询,可以将数值字段定义为字符串类型的 |
in查询 | 若传入的数据带,(逗号) 则表示该查询为in查询 | |
in查询 | 数字类型字段多值查询,需要将字段加上后缀“_MultiString”,其他规则同上 | 例如实体字段:tableType,页面接受参数字段 tableType_MultiString |
多选字段模糊查询 | 例如 现在name传入值 ,a,b,c, 那么结果sql就是 name like '%a%' or name like '%b%' or name like '%c%' | 上述4 有一个特例,若某一查询字段前后都带逗号 则会将其视为走这种查询方式 ,该查询方式是将查询条件以逗号分割再遍历数组 将每个元素作like查询 用or拼接 |
高级值规则用法 (查询内容,带有查询规则符号 )
查询模式 | 用法 | 举例 |
---|---|---|
< | 小于查询,查询内容值规则:"lt+ 空格 + 内容" | 输入值: “lt 100” |
<= | 小于等于查询,查询内容值规则:"le+ 空格+ 内容" | 输入值: “le 100” |
> | 大于查询,查询内容值规则:"gt+ 空格+ 内容" | 输入值: “gt 100” |
>= | 大于等于查询,查询内容值规则:"ge+ 空格+ 内容" | 输入值: “ge 100” |
范围匹配方式,则页面查询控件需要变成两个分别名 {}_begin,{}_end
{}_begin: 表示查询范围开始值
{}_end: 表示查询范围结束值
举例:
字段名称 costTime
查询开始 : costTime_begin
查询结束 : costTime_end
this.queryParam.costTime_begin = costTime_begin;
this.queryParam.costTime_end = costTime_end;