Skip to content

查询过滤器用法

xinwu-yang edited this page Feb 28, 2023 · 1 revision

功能描述

查询过滤器可以帮助快速生成查询条件,不需要编码通过配置实现,支持模糊查询、匹配查询、范围查询、不匹配查询等规则。

查询过滤器

页面查询字段,需跟后台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

查询过滤器如何集成

  1. 页面实现查询条件

在线列表的查询区域,增加需要的查询字段,如下图所示。

效果:

  1. 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;

更新日志

CHANGELOG

开发环境

开发环境安装

Git开发和迭代规范

Git开发和迭代规范

快速开始

3.0.x

2.6.x

代码生成器

如何使用代码生成器

自定义代码生成器模板

开发技巧

登录和凭证配置介绍

如何在代码中获取当前登录对象

字典翻译

菜单路由配置

数据日志如何使用

查询过滤器用法

系统操作日志怎么插入

平台消息推送接口

限制API重复提交

部门父子编码使用方法

系统文件上传

系统编码规则如何使用

系统校验规则如何使用

第三方平台如何调用魔方API

如何切换回Druid数据源

自定义接口拦截器

自定义接口参数Formatter

使用SpringDoc编写API文档

系统权限用法

接口请求权限

页面按钮权限

表格列字段权限

二级部门权限管理

数据权限

表单权限

业务模块

Quartz任务调度

消息中心

第三方登录

阿里云OSS(MinIO)上传管理模块

魔方Plugins

工作流引擎

SQL导出

字符串脱敏

Excel的快速导入导出

文件的上传和下载

加密插件

接入magic-api

新版代码生成器

通用地图服务

高级用法

部门结构变化权限如何控制

如何优雅的拓展用户部门字段

多租户

SSO单点登录

Prometheus

数据库专栏

MySQL5.7+

MySQL分区表

达梦数据库(DM8)

魔方集成达梦数据库

从MySQL迁移到达梦数据库

达梦8与MySQL的主要区别

MyCat分库分表

原则

垂直分片Demo

水平分片Demo

微服务

如何切换微服务

微服务组件

预研Demo示例

预研Demo示例

Clone this wiki locally