JeecgBoot低代碼開發平臺,自己封裝了一套查詢過濾器,默認就支持模糊查詢,只是需要前後加上*,雖然麻煩,但是這樣是考慮到系統後期數據量大默認模糊查詢會導致系統性能問題。當然如果你的系統數據量級別達不到這個情況,我們也提供了默認模糊查詢控件,不需要前後輸入*
一、查詢過濾器用法
目錄索引:
- 功能描述
- 查詢規則
- 全匹配查詢
- 模糊查詢
- 範圍查詢
- 包含查詢
- 等等。。。
- 查詢過濾器如何集成
- 更多查詢規則參考
查詢過濾器
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” |
- 範圍匹配方式,則頁面查詢控件需要變成兩個分別名 {}_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},
},
//省略其他代碼