JeecgBoot 低代碼平臺 — 默認模糊查詢以及高級查詢規(guī)則(jeecgboot代碼生成器)
JeecgBoot 低代碼平臺 — 默認模糊查詢以及高級查詢規(guī)則(jeecgboot代碼生成器)
JeecgBoot 低代碼開發(fā)平臺,自己封裝了一套查詢過濾器,默認就支持模糊查詢,只是需要前后加上 *,雖然麻煩,但是這樣是考慮到系統(tǒng)后期數(shù)據(jù)量大默認模糊查詢會導(dǎo)致系統(tǒng)性能問題。當然如果你的系統(tǒng)數(shù)據(jù)量級別達不到這個情況,我們也提供了默認模糊查詢控件,不需要前后輸入 *
一、查詢過濾器用法
目錄索引:
- 功能描述
- 查詢規(guī)則全匹配查詢模糊查詢范圍查詢包含查詢等等
- 查詢過濾器如何集成
- 更多查詢規(guī)則參考
查詢過濾器
1、功能描述
查詢過濾器可以幫助快速生成查詢條件,不需要編碼通過配置實現(xiàn),支持模糊查詢、匹配查詢、范圍查詢、不匹配查詢等規(guī)則。
2、查詢規(guī)則
說明: 頁面查詢字段,需跟后臺 Controller 中 Page 的字段對應(yīng)一致,后臺不需寫代碼自動生成查詢條件 SQL; 默認查詢條件是全匹配,想實現(xiàn)模糊查詢需求在查詢值的前后加: *;
查詢匹配方式規(guī)則: [1]. 全匹配查詢:查詢數(shù)據(jù)沒有特殊格式,默認為全匹配查詢 [2]. 模糊查詢:查詢數(shù)據(jù)格式需加星號:{ * } 例如:
格式一: 張* (后模糊匹配) 格式二: *張 (前模糊匹配) 格式三: *張* (全模糊匹配) 格式四: *張*三* (更高級匹配)
[3]. 包含查詢:查詢數(shù)據(jù)格式采用逗號分隔:{ , }
例如:
格式: 張三,李四 (含義:In('張三','李四'))
[4]. 不匹配查詢:查詢數(shù)據(jù)格式需要加嘆號前綴:{ ! }
例如:
格式: !張三 (含義:不等于'張三') 特殊說明:查詢不為Null的語法:!null(大小寫沒關(guān)系); 查詢不為空字符串的方法:!(只有一個嘆號);
[5]. 范圍查詢,支持數(shù)字,時間的范圍查詢,針對范圍查詢頁面會生成兩個查詢控件
1. 如果是單一匹配方式,則頁面查詢控件的name, 跟實體字段命名一樣2. 如果是范圍匹配方式,則頁面查詢控件需要變成兩個分別名 {*}_begin,{*}_end{*}_begin: 表示查詢范圍開始值{*}_end: 表示查詢范圍結(jié)束值 舉例:字段名稱 orderDate查詢開始時間 : orderDate_begin查詢結(jié)束時間 : orderDate_end
3、查詢過濾器如何集成
第一步:頁面實現(xiàn)查詢條件 在線列表的查詢區(qū)域,增加需要的查詢字段,如下圖所示。
效果:
第二步:controller 層處理 Controller 中對應(yīng)的處理邏輯中追加如下代碼:
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>>(); //調(diào)用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、更多查詢規(guī)則參考
查詢模式 | 用法 | 說明 |
模糊查詢 | 支持左右模糊和全模糊 需要在查詢輸入框內(nèi)前或后帶 * 或是前后全部帶 * | |
取非查詢 | 在查詢輸入框前面輸入!則查詢該字段不等于輸入值的數(shù)據(jù) | (數(shù)值類型不支持此種查詢,可以將數(shù)值字段定義為字符串類型的) |
in 查詢 | 若傳入的數(shù)據(jù)帶,(逗號) 則表示該查詢?yōu)?in 查詢 | |
in 查詢 | 數(shù)字類型字段多值查詢,需要將字段加上后綴 “_MultiString”,其他規(guī)則同上 | 例如實體字段:tableType,頁面接受參數(shù)字段 tableType_MultiString |
多選字段模糊查詢 | 例如 現(xiàn)在 name 傳入值,a,b,c, 那么結(jié)果 sql 就是 name like '% a%' or name like '% b%' or name like '% c%' | 上述 4 有一個特例,若某一查詢字段前后都帶逗號 則會將其視為走這種查詢方式,該查詢方式是將查詢條件以逗號分割再遍歷數(shù)組 將每個元素作 like 查詢 用 or 拼接, |
- 高級值規(guī)則用法 (查詢內(nèi)容,帶有查詢規(guī)則符號)
查詢模式 | 用法 | 舉例 |
< | 小于查詢。 查詢內(nèi)容值規(guī)則:"lt 空格 內(nèi)容" | 輸入值: “l(fā)t 100” |
<= | 小于等于查詢。 查詢內(nèi)容值規(guī)則:"le 空格 內(nèi)容" | 輸入值: “l(fā)e 100” |
> | 大于查詢。 查詢內(nèi)容值規(guī)則:"gt 空格 內(nèi)容" | 輸入值: “gt 100” |
>= | 大于等于查詢。 查詢內(nèi)容值規(guī)則:"ge 空格 內(nèi)容" | 輸入值: “ge 100” |
- 范圍匹配方式,則頁面查詢控件需要變成兩個分別名 {}_begin,{}_end {}_begin: 表示查詢范圍開始值 {}_end: 表示查詢范圍結(jié)束值
舉例:
字段名稱 costTime 查詢開始 : costTime_begin 查詢結(jié)束 : costTime_end this.queryParam.costTime_begin = costTime_begin; this.queryParam.costTime_end = costTime_end;
二、JInput 默認模糊查詢組件 —Vue2 版
特殊查詢組件,默認支持模糊查詢、大于等于查詢、小于等于查詢、不匹配查詢。
1. 參數(shù)配置
參數(shù) | 類型 | 必填 | 說明 |
placeholder | string | placeholder | |
trim | boolean | 是否自動去空格 默認 false | |
type | string | 查詢類型 ['like','ne','ge','le'] 分別是模糊,不等于,大于,小于,默認 like, 如果不想添加任何規(guī)則,請設(shè)置 type="", 即能走等于查詢(默認 like) |
2. 使用示例 改造用戶管理,賬號支持模糊查詢 2.1 組件導(dǎo)入
//省略其他代碼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 版
特殊查詢組件,支持模糊查詢、大于等于查詢、小于等于查詢、不匹配查詢。
參數(shù)定義
參數(shù) | 類型 | 必填 | 說明 |
placeholder | string | placeholder | |
trim | boolean | 是否自動去空格 默認 false | |
type | string | 查詢類型 ['like','ne','ge','le'] 分別是模糊,不等于,大于,小于,默認 like, 如果不想添加任何規(guī)則,請設(shè)置 type="", 即能走等于查詢(默認 like) | |
disabled | Boolean | 否 | 是否禁用,默認值 false |
效果展示
使用示例
改造用戶管理,賬號支持模糊查詢,配置 JInput 組件(user.data.ts 文件中)
//省略其他代碼{ label: '賬號', field: 'username', component: 'JInput', colProps: {span: 6},},//省略其他代碼