JeecgBoot低代码平台—默认模糊查询以及高级查询规则

news2024/9/23 9:57:16

JeecgBoot低代码开发平台,自己封装了一套查询过滤器,默认就支持模糊查询,只是需要前后加上*,虽然麻烦,但是这样是考虑到系统后期数据量大默认模糊查询会导致系统性能问题。当然如果你的系统数据量级别达不到这个情况,我们也提供了默认模糊查询控件,不需要前后输入*

一、查询过滤器用法

目录索引:

  • 功能描述
  • 查询规则
    1. 全匹配查询
    2. 模糊查询
    3. 范围查询
    4. 包含查询
    5. 等等。。。
  • 查询过滤器如何集成
  • 更多查询规则参考

查询过滤器

1、功能描述

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

2、查询规则

**说明:**页面查询字段,需跟后台Controller中Page的字段对应一致,后台不需写代码自动生成查询条件SQL;
默认查询条件是全匹配,想实现模糊查询需求在查询值的前后加: *;

查询匹配方式规则:
[1].全匹配查询:查询数据没有特殊格式,默认为全匹配查询
[2].模糊查询:查询数据格式需加星号:{ * }
例如:

     格式一: 张*    (后模糊匹配)
     格式二: *张    (前模糊匹配)
     格式三: *张*   (全模糊匹配)                                            
     格式四: *张*三* (更高级匹配)

[3].包含查询:查询数据格式采用逗号分隔:{ , }
例如:

格式:  张三,李四  
       (含义:In('张三','李四'))

[4].不匹配查询:查询数据格式需要加叹号前缀:{ ! }
例如:

格式: !张三
     (含义:不等于'张三')
    特殊说明:查询不为Null的语法:!null(大小写没关系);
             查询不为空字符串的方法:!(只有一个叹号);

[5].范围查询,支持数字,时间的范围查询,针对范围查询页面会生成两个查询控件

1. 如果是单一匹配方式,则页面查询控件的name, 跟实体字段命名一样
2. 如果是范围匹配方式,则页面查询控件需要变成两个分别名 {*}_begin,{*}_end
{*}_begin: 表示查询范围开始值
{*}_end:    表示查询范围结束值 

举例:
字段名称 orderDate
查询开始时间 : orderDate_begin
查询结束时间 : orderDate_end

3、查询过滤器如何集成

第一步:页面实现查询条件
在线列表的查询区域,增加需要的查询字段,如下图所示。

效果:

第二步:controller层处理
Controller中对应的处理逻辑中追加如下代码:

QueryWrapper<?> queryWrapper = QueryGenerator.initQueryWrapper(?, req.getParameterMap());

代码示例:


	@GetMapping(value = "/list")
	public Result<IPage<JeecgDemo>> list(JeecgDemo jeecgDemo, @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, 
	                                     @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
			HttpServletRequest req) {
		Result<IPage<JeecgDemo>> result = new Result<IPage<JeecgDemo>>();
		
		//调用QueryGenerator的initQueryWrapper
		QueryWrapper<JeecgDemo> queryWrapper = QueryGenerator.initQueryWrapper(jeecgDemo, req.getParameterMap());
		
		Page<JeecgDemo> page = new Page<JeecgDemo>(pageNo, pageSize);
		IPage<JeecgDemo> pageList = jeecgDemoService.page(page, queryWrapper);
		result.setSuccess(true);
		result.setResult(pageList);
		return result;
	}

4、更多查询规则参考

查询模式用法说明
模糊查询支持左右模糊和全模糊 需要在查询输入框内前或后带*或是前后全部带*
取非查询在查询输入框前面输入! 则查询该字段不等于输入值的数据(数值类型不支持此种查询,可以将数值字段定义为字符串类型的)
in查询若传入的数据带,(逗号) 则表示该查询为in查询
in查询数字类型字段多值查询,需要将字段加上后缀“_MultiString”,其他规则同上例如实体字段,页面接受参数字段 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”
  1. 范围匹配方式,则页面查询控件需要变成两个分别名 {}_begin,{}_end
    {}_begin: 表示查询范围开始值
    {
    }_end: 表示查询范围结束值

举例:


字段名称 costTime
查询开始 : costTime_begin
查询结束 : costTime_end
this.queryParam.costTime_begin = costTime_begin;
this.queryParam.costTime_end = costTime_end;

二、JInput 特殊查询组件(VUE2版)

特殊查询组件,默认支持模糊查询、大于等于查询、小于等于查询、不匹配查询。

1.参数配置

参数类型必填说明
placeholderstringplaceholder
trimboolean是否自动去空格 默认false
typestring查询类型['like','ne','ge','le'] 分别是模糊,不等于,大于,小于,默认like,如果不想添加任何规则,请设置type="",即能走等于查询(默认like)

2.使用示例
改造用户管理,账号支持模糊查询
2.1 组件导入

//省略其他代码
import JInput from '@/components/jeecg/JInput'

export default {
  name: "UserList",
  mixins: [JeecgListMixin],
  components: {
    SysUserAgentModal,
    UserModal,
    PasswordModal,
    JInput
  },
//省略其他代码

2.2 替换输入框

<a-col :md="6" :sm="12">
  <a-form-item label="账号">
    <!--<a-input placeholder="请输入账号查询" v-model="queryParam.username"></a-input>-->
    <j-input placeholder="请输入账号模糊查询" v-model="queryParam.username"></j-input>
  </a-form-item>
</a-col>

2.3 测试

 

三、JInput特殊查询组件(VUE3版)

JInput特殊查询组件 

主要特殊查询组件,默认支持模糊查询、大于等于查询、小于等于查询、不匹配查询。

参数定义

参数类型必填说明
placeholderstringplaceholder
trimboolean是否自动去空格 默认false
typestring查询类型['like','ne','ge','le'] 分别是模糊,不等于,大于,小于,默认like,如果不想添加任何规则,请设置type="",即能走等于查询(默认like)
disabledBoolean是否禁用,默认值false

效果展示

使用示例

改造用户管理,账号支持模糊查询,配置JInput组件(user.data.ts文件中)

//省略其他代码
{
  label: '账号',
  field: 'username',
  component: 'JInput',
  colProps: {span: 6},
},
//省略其他代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/488516.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

高校大数据实验室解决方案

高校实验室建设总目标是搭建一站式教学服务平台&#xff0c;一站式教学服务平台概念是在深刻理解高校学科建设及存在的若干问题上提出。围绕着学科建设的各个方面&#xff0c;从专业开设、课程设置、师资培养、教学资源、实验环境、学生实训实习及就业创业等环节&#xff0c;提…

Android热修复原理与实战

作者&#xff1a;独孤狼 什么是热修复 在我们应用上线后出现bug需要及时修复时&#xff0c;不用再发新的安装包&#xff0c;只需要发布补丁包&#xff0c;在客户无感知下修复掉bug 怎么进行热修复 服务端&#xff1a;补丁包管理 用户端&#xff1a;执行热修复 开发端&#xff1…

Introduction to modern Cryptography 现代密码学原理与协议第一章笔记

加密的语法由三个算法组成:密钥产生&#xff0c;加密&#xff0c;解密 (1) 密钥产生算法Gen是一个概率算法&#xff0c;能够根据方案定义的某种分布方案分布选择并输出一个密钥k (2) 加密算法Enc,输入为密钥k和明文m&#xff0c;输出为密文c。把使用密钥k加密明文m记为Enck(m) …

【Vue 基础】尚品汇项目-06-vuex模块式开发

vuex是官方提供一个插件&#xff0c;状态管理库&#xff0c;集中式管理项目中组件共用的数据。 目录 一、安装 二、vuex的基本使用 三、vuex模块式开发 一、安装 安装命令&#xff1a; npm install vuex3.6.2 --save 如果安装错版本&#xff0c;要先卸载再重新安装&#…

认识Filter(过滤器)

Filter介绍 在计算机编程中&#xff0c;Filter&#xff08;过滤器&#xff09;是一种用于对数据流进行处理的软件组件。Filter 的作用是从输入流中获取数据&#xff0c;对其进行处理后再将其写入输出流中。Filter 组件通常用于数据校验、数据转换、数据压缩等方面&#xff0c;…

微服务知识2

CAP和BASE是分布式必备理论基础 CAP理论 一致性(C)&#xff1a;写操作之后进行读操作无论在哪个节点都需要返回写操作的值 可用性(A)&#xff1a;非故障的节点在合理的时间内返回合理的响应 分区容错性(P)&#xff1a;当出现网络分区后&#xff0c;系统能够继续工作&#x…

家用平价洗地机哪款好?国产性价比高的品牌

在当今社会&#xff0c;人们使用清洁电器已经非常普及&#xff0c;成为了人们日常清洁中必不可少的得力助手了。洗地机在我看来&#xff0c;它在清洁力度上做的十分优秀&#xff0c;无论是干湿垃圾还是顽固污渍&#xff0c;皆可以清洗到位&#xff1b;同时&#xff0c;洗地机配…

《花雕学AI》AI 人工智能伙伴关系的指南:遵循原则,实现实践,展望未来

引言&#xff1a;人工智能&#xff08;AI&#xff09;是指由人造的机器或系统所展现出的智能&#xff0c;它可以模拟或扩展人类的认知功能&#xff0c;如学习、推理、感知、交流等。 人工智能的发展和应用已经深刻地影响了社会、经济、文化和政治等各个领域&#xff0c;同时也带…

( 数组和矩阵) 697. 数组的度 ——【Leetcode每日一题】

❓697. 数组的度 难度&#xff1a;简单 给定一个非空且只包含非负数的整数数组 nums&#xff0c;数组的 度 的定义是指数组里任一元素出现频数的最大值。 你的任务是在 nums 中找到与 nums 拥有相同大小的度的最短连续子数组&#xff0c;返回其长度。 示例 1&#xff1a; 输…

Java异常处理传递规范总结

java 异常分类 Thorwable类&#xff08;表示可抛出&#xff09;是所有异常和错误的超类&#xff0c;两个直接子类为Error和Exception&#xff0c;分别表示错误和异常。其中异常类Exception又分为运行时异常(RuntimeException)和非运行时异常&#xff0c; 这两种异常有很大的区别…

Linux 概述及常用命令(一)

1、Linux 简介 Linux 是一套免费使用和自由传播的类 Unix 操作系统&#xff08;主要用在服务器上&#xff09;&#xff0c;是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。 目前市面上较知名的发行版有&#xff1a;Ubuntu&#xff0c;RedHat&…

大学生创业者最关心的问题——校园外卖到底能不能盈利?

与前十年的寒窗苦读相比&#xff0c;大学自由散漫的生活略显空虚。除了学习&#xff0c;学生们还有很多时间自由安排。有些人选择颓废&#xff0c;有些人选择勤奋。而校园创业是许多有想法的大学生都会做的事情。其中&#xff0c;外卖跑腿配送是特别受欢迎的创业项目之一。 那…

五月到了,再来看看ChatGPT给我们带来了什么吧!

ChatGPT&#xff0c;即聊天生成预训练转换器&#xff08;Chat Generative Pre-trained Transformer&#xff09;&#xff0c;是美国OpenAI公司基于GPT-3.5架构&#xff08;目前已经更新到GPT-4&#xff0c;但仅限于Plus用户&#xff09;研发和强化训练的一款人工智能聊天机器人…

C++学习day--04 图形化开发环境搭建

1、为什么要搭建图形化开发环境 因为很多初学者学习C就是单纯的控制台打印输出&#xff0c;很枯燥&#xff0c;我们今后在做项目或者在学习的过程中&#xff0c;采用图形化方式相结合的方法学习&#xff0c;再学习中体会编程带来的快乐。先说明一下&#xff0c;奇牛课程是边学…

YOLOv6 4.0 使用记录:python推理 OpenCV DNN 推理

目录 1、下载源码 2、下载权重文件 3、配置环境 4、推理 6、ONNX格式导出 权重文件为yolov6list_s.pt 权重为yolov6.pt 7、opencv DNN推理 8、个人总结 1、下载源码 下载最新的4.0版本的 2、下载权重文件 我下的是YOLOv6Lite-S 3、配置环境 cd到项目目录&#xff0c;运…

关于IDEA编译运行时出现 《非法字符: ‘\ufeff‘ 需要class,interface或enum》的解决办法

问题如下 原因&#xff1a;编码问题解决办法&#xff1a;将这些报错的文件拷贝到一个目录中&#xff0c;然后用notpad打开&#xff0c;点击工具类上的 编码&#xff0c;将 以uft8格式编码 转为 以utf8无BOM格式编码&#xff0c;然后保存&#xff0c;再覆盖idea中对应的文件。或…

人脸识别--传统+深度方法

人脸识别算法--非深度方法 在前深度学习时代&#xff0c;非深度的方法探索了不同的人脸识别算法。 先考虑一下非深度学习时代&#xff0c;人脸识别难在哪&#xff1f;或者说目标识别的难点在哪&#xff1f; 图像是一个高度冗余的数据。 * 图像数据中包含大量与语义无关的内容…

Hadoop3.3.1 Windows环境配置

1.解压hadoop-3.3.1.tar.gz 到windows安装路径 D:\h3\hadoop-3.3.1 2.检查Windows jdk是否安装正常 3.下载winutils GitHub - steveloughran/winutils: Windows binaries for Hadoop versions (built from the git commit ID used for the ASF relase) 解压到D:\h3\ 并重命名…

Python每日一练(20230504) 课程表 Course Schedule I/II

目录 1. 课程表 Course Schedule I 2. 课程表 Course Schedule II &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 1. 课程表 Course Schedule I 你这个学期必须选修 numCourses 门课程&a…

五一劳动节程序员应该知道的知识——计算机

前言 现在AI崛起&#xff0c;计算机已经成为我们不可或缺的一部分&#xff0c;几乎在所有行业和领域都有广泛应用 。 五一已经快要过去了&#xff0c;程序员们应该都放假了&#xff0c;那我们是不是应该去了解了解我们的伙伴——计算机&#xff0c;了去解计算机是怎样工作的&am…