关于jeecg-boot:JeecgBoot低代码平台默认模糊查询以及高级查询规则

50次阅读

共计 3441 个字符,预计需要花费 9 分钟才能阅读完成。

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,页面承受参数字段 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. 参数配置

参数 类型 必填 阐明
placeholder string placeholder
trim boolean 是否主动去空格 默认 false
type string 查问类型[‘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 版

非凡查问组件,反对含糊查问、大于等于查问、小于等于查问、不匹配查问。

参数定义

参数 类型 必填 阐明
placeholder string placeholder
trim boolean 是否主动去空格 默认 false
type string 查问类型[‘like’,’ne’,’ge’,’le’] 别离是含糊,不等于,大于,小于,默认 like, 如果不想增加任何规定,请设置 type=””, 即能走等于查问(默认 like)
disabled Boolean 是否禁用, 默认值 false

成果展现

应用示例

革新用户治理,账号反对含糊查问, 配置 JInput 组件(user.data.ts 文件中)

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

正文完
 0