好的,根據您提供的文件內容,我提取了 fuzzyQuery
方法,並對其進行詳細分析。以下是提取的 fuzzyQuery
方法及其相關部分:
提取的 fuzzyQuery
方法
@Override
public FuzzyQueryIndexPatternResponse fuzzyQuery(FuzzyQueryIndexPatternRequest request) {
Map<String, Object> map = new HashMap<>();
map.put("indexPatternName", request.getIndexPatternName());
map.put("systemIdList", request.getSystemIdList());
map.put("applicationName", request.getApplicationName());
FuzzyQueryIndexPatternResponse response = new FuzzyQueryIndexPatternResponse();
// 設定預設分頁引數
if (request.getPageIndex() <= 0) {
request.setPageIndex(1);
}
if (request.getLimit() <= 0) {
request.setLimit(10);
}
int offset = (request.getPageIndex() - 1) * request.getLimit();
// 執行模糊查詢
Page<IndexPattern> indexPatternPage = PageHelper.offsetPage(offset, request.getLimit(), true).doSelectPage(() -> indexPatternMapper.fuzzySearch(map));
// 將查詢結果轉換為 IndexPatternItem 列表
Page<IndexPatternItem> indexPatternItemPage = new Page<>();
BeanUtils.copyProperties(indexPatternPage, indexPatternItemPage);
for (IndexPattern indexPattern : indexPatternPage.getResult()) {
indexPatternItemPage.add(getIndexPatternItem(indexPattern));
}
// 設定響應結果
response.setPageInfo(indexPatternItemPage.toPageInfo());
RespUtils.setSuccess(response);
return response;
}
方法分析
輸入引數
FuzzyQueryIndexPatternRequest request
:包含模糊查詢所需的引數,如indexPatternName
(索引模式名稱)、systemIdList
(系統ID列表)、applicationName
(應用名稱)、pageIndex
(當前頁碼)和limit
(每頁顯示的記錄數)。
輸出引數
FuzzyQueryIndexPatternResponse response
:包含查詢結果的響應物件,包括分頁資訊和查詢到的IndexPatternItem
列表。
方法步驟
-
初始化查詢引數:
Map<String, Object> map = new HashMap<>(); map.put("indexPatternName", request.getIndexPatternName()); map.put("systemIdList", request.getSystemIdList()); map.put("applicationName", request.getApplicationName());
- 建立一個
HashMap
物件來儲存查詢引數。 - 將請求中的
indexPatternName
、systemIdList
和applicationName
新增到map
中。
- 建立一個
-
建立響應物件:
FuzzyQueryIndexPatternResponse response = new FuzzyQueryIndexPatternResponse();
-
設定預設分頁引數:
if (request.getPageIndex() <= 0) { request.setPageIndex(1); } if (request.getLimit() <= 0) { request.setLimit(10); }
- 如果請求中的
pageIndex
小於等於 0,則預設設定為 1。 - 如果請求中的
limit
小於等於 0,則預設設定為 10。
- 如果請求中的
-
計算偏移量:
int offset = (request.getPageIndex() - 1) * request.getLimit();
- 計算查詢的起始偏移量,用於分頁查詢。
-
執行模糊查詢:
Page<IndexPattern> indexPatternPage = PageHelper.offsetPage(offset, request.getLimit(), true).doSelectPage(() -> indexPatternMapper.fuzzySearch(map));
- 使用
PageHelper
進行分頁查詢。 - 呼叫
indexPatternMapper.fuzzySearch(map)
方法執行模糊查詢,並返回分頁結果。
- 使用
-
轉換查詢結果:
Page<IndexPatternItem> indexPatternItemPage = new Page<>(); BeanUtils.copyProperties(indexPatternPage, indexPatternItemPage); for (IndexPattern indexPattern : indexPatternPage.getResult()) { indexPatternItemPage.add(getIndexPatternItem(indexPattern)); }
- 建立一個新的
Page<IndexPatternItem>
物件。 - 使用
BeanUtils.copyProperties
方法將indexPatternPage
的屬性複製到indexPatternItemPage
。 - 遍歷查詢結果,將每個
IndexPattern
物件轉換為IndexPatternItem
物件,並新增到indexPatternItemPage
中。
- 建立一個新的
-
設定響應結果:
response.setPageInfo(indexPatternItemPage.toPageInfo()); RespUtils.setSuccess(response);
- 將分頁資訊設定到響應物件中。
- 使用
RespUtils.setSuccess
方法設定響應的成功狀態。
-
返回響應物件:
return response;
總結
fuzzyQuery
方法透過接收模糊查詢請求,執行分頁模糊查詢,並將查詢結果轉換為 IndexPatternItem
列表,最終返回包含分頁資訊和查詢結果的響應物件。這種方法能夠有效地處理模糊查詢需求,並支援分頁展示結果。
好的,讓我們詳細分析 fuzzyQuery
方法中的關鍵部分,特別是這一段程式碼:
Page<IndexPattern> indexPatternPage = PageHelper.offsetPage(offset, request.getLimit(), true).doSelectPage(() -> indexPatternMapper.fuzzySearch(map));
// 將查詢結果轉換為 IndexPatternItem 列表
Page<IndexPatternItem> indexPatternItemPage = new Page<>();
BeanUtils.copyProperties(indexPatternPage, indexPatternItemPage);
for (IndexPattern indexPattern : indexPatternPage.getResult()) {
indexPatternItemPage.add(getIndexPatternItem(indexPattern));
}
詳細分析
1. 執行分頁模糊查詢
Page<IndexPattern> indexPatternPage = PageHelper.offsetPage(offset, request.getLimit(), true).doSelectPage(() -> indexPatternMapper.fuzzySearch(map));
引數解釋
offset
:查詢的起始偏移量,表示從第幾條記錄開始查詢。request.getLimit()
:每頁顯示的記錄數。true
:是否開啟分頁統計,通常用於獲取總記錄數。() -> indexPatternMapper.fuzzySearch(map)
:這是一個 lambda 表示式,表示要執行的查詢方法。indexPatternMapper.fuzzySearch(map)
是實際的查詢方法,傳入的map
包含查詢引數。
執行邏輯
-
分頁設定:
PageHelper.offsetPage(offset, request.getLimit(), true)
:設定分頁引數,包括起始偏移量offset
、每頁記錄數request.getLimit()
和是否開啟分頁統計true
。
-
執行查詢:
doSelectPage(() -> indexPatternMapper.fuzzySearch(map))
:執行實際的查詢方法indexPatternMapper.fuzzySearch(map)
,並將結果封裝在一個Page
物件中。indexPatternMapper.fuzzySearch(map)
:這是一個 Mapper 方法,用於執行模糊查詢。map
包含查詢條件,如indexPatternName
、systemIdList
和applicationName
。
-
返回結果:
- 查詢結果被封裝在
Page<IndexPattern>
物件中,該物件不僅包含查詢結果,還包含分頁資訊,如總記錄數、當前頁碼等。
- 查詢結果被封裝在
2. 將查詢結果轉換為 IndexPatternItem
列表
// 將查詢結果轉換為 IndexPatternItem 列表
Page<IndexPatternItem> indexPatternItemPage = new Page<>();
BeanUtils.copyProperties(indexPatternPage, indexPatternItemPage);
for (IndexPattern indexPattern : indexPatternPage.getResult()) {
indexPatternItemPage.add(getIndexPatternItem(indexPattern));
}
引數解釋
indexPatternPage
:包含查詢結果的Page<IndexPattern>
物件。indexPatternItemPage
:新的Page<IndexPatternItem>
物件,用於儲存轉換後的結果。getIndexPatternItem(indexPattern)
:將IndexPattern
物件轉換為IndexPatternItem
物件的方法。
執行邏輯
-
建立新的
Page
物件:Page<IndexPatternItem> indexPatternItemPage = new Page<>();
:建立一個新的Page
物件,用於儲存轉換後的IndexPatternItem
列表。
-
複製分頁資訊:
BeanUtils.copyProperties(indexPatternPage, indexPatternItemPage);
:使用BeanUtils.copyProperties
方法將indexPatternPage
的分頁資訊(如總記錄數、當前頁碼等)複製到indexPatternItemPage
。
-
遍歷查詢結果並轉換:
for (IndexPattern indexPattern : indexPatternPage.getResult()) {
:遍歷indexPatternPage
中的查詢結果。indexPatternItemPage.add(getIndexPatternItem(indexPattern));
:將每個IndexPattern
物件轉換為IndexPatternItem
物件,並新增到indexPatternItemPage
中。
-
轉換方法:
getIndexPatternItem(indexPattern)
:這是一個方法,用於將IndexPattern
物件轉換為IndexPatternItem
物件。具體的轉換邏輯取決於getIndexPatternItem
方法的實現。
總結
這段程式碼的主要功能是執行分頁模糊查詢,並將查詢結果轉換為 IndexPatternItem
列表。具體步驟如下:
- 設定分頁引數並執行查詢:使用
PageHelper
設定分頁引數,並呼叫indexPatternMapper.fuzzySearch(map)
方法執行模糊查詢。 - 建立新的
Page
物件:建立一個新的Page<IndexPatternItem>
物件,用於儲存轉換後的結果。 - 複製分頁資訊:將查詢結果的分頁資訊複製到新的
Page
物件中。 - 遍歷查詢結果並轉換:遍歷查詢結果,將每個
IndexPattern
物件轉換為IndexPatternItem
物件,並新增到新的Page
物件中。
這樣做的目的是為了確保查詢結果以統一的格式返回,並且保留分頁資訊。