springboot vue項(xiàng)目后端列表接口分頁(yè)模糊查詢
基于 springboot+vue 的測(cè)試平臺(tái)開(kāi)發(fā)
繼續(xù)更新
打開(kāi)項(xiàng)目管理,就需要看到列表里展示項(xiàng)目數(shù)據(jù),比如這樣(截圖是這個(gè)前端框架的demo,僅作示意):

那么對(duì)應(yīng)到我們平臺(tái)的項(xiàng)目管理功能,就需要有:
- 列表展示添加的項(xiàng)目數(shù)據(jù)
- 可以通過(guò)項(xiàng)目名稱查詢指定的項(xiàng)目
- 新增項(xiàng)目
- 編輯項(xiàng)目
- 其他功能...
新增項(xiàng)目的接口已經(jīng)實(shí)現(xiàn),接下來(lái)實(shí)現(xiàn)項(xiàng)目列表接口。
這個(gè)列表接口,我需要它可以同時(shí)滿足分頁(yè)以及條件查詢,路徑大概為/list/{currentPage}/{pageSize}。
其中 currentPage 表示當(dāng)前是第幾頁(yè),pageSize 表示每頁(yè)大小。
比如/list/1/5},就說(shuō)明我要查第 1 頁(yè),每頁(yè)展示 5 條數(shù)據(jù)。
一、分頁(yè)插件
mybatis-plus 提供了一些很實(shí)用的插件,其中就包括分頁(yè)插件。
新建一個(gè)配置類(lèi) MybatisPlusConfig 用于存放 mybatis-plus 相關(guān)插件配置,并且注冊(cè)分頁(yè)插件:
package com.pingguo.bloomtest.config;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MybatisPlusConfig {
// 分頁(yè)插件
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
}二、實(shí)現(xiàn)接口
實(shí)現(xiàn)的套路還是之前的那樣,說(shuō)到這,其實(shí) mybatis-plus 還提供了代碼生成器 AutoGenerator。
通過(guò)它可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各個(gè)模塊的代碼,提升開(kāi)發(fā)效率。
但是這里我并不要使用,因?yàn)楸緛?lái)就是學(xué)習(xí)的過(guò)程,多寫(xiě)寫(xiě)加深印象。另外本工程量實(shí)在也不大,就沒(méi)必要用了。
1. 編寫(xiě) Service 層
在之前的 ProjectService 下,新增查詢方法 getProjectList 。
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
public IPage<Project> getProjectList(int currentPage, int pageSize, Project project) {
// 創(chuàng)建分頁(yè)對(duì)象,current為當(dāng)前頁(yè)數(shù),size為每頁(yè)最大記錄數(shù)
Page<Project> pageProject = new Page<>(currentPage, pageSize);
QueryWrapper<Project> wrapperProject = new QueryWrapper<>();
// 第一個(gè)參數(shù)為是否執(zhí)行條件,為true則執(zhí)行該條件
wrapperProject.like(StringUtils.isNoneBlank(project.getProjectName()), "projectName", project.getProjectName());
// 調(diào)用分頁(yè)查詢方法,傳入分頁(yè)對(duì)象-pageProject,wrapperProject是構(gòu)造條件對(duì)象
return projectDAO.selectPage(pageProject, wrapperProject);
}- 創(chuàng)建分頁(yè)對(duì)象 Page,它有 2 個(gè)參數(shù),其中 current 為當(dāng)前頁(yè)數(shù),size 則為每頁(yè)最大記錄數(shù)。
- 因?yàn)?getProjectList 方法也要實(shí)現(xiàn)條件查詢,所以創(chuàng)建條件查詢對(duì)象。
- wrapperProject.like 使用模糊查詢,like 方法可以有 3 個(gè)參數(shù),第一個(gè)參數(shù)為是否執(zhí)行條件,當(dāng)
- projectName 為空就不執(zhí)行。
- 最后調(diào)用 selectPage 方法,傳入分頁(yè)對(duì)象-pageProject 和 構(gòu)造條件對(duì)象 wrapperProject。
返回的對(duì)象類(lèi)型是 IPage,包名也貼出來(lái)了。
2. 編寫(xiě) Controller 層
在之前的 ProjectController 類(lèi)下新增控制方法 getProjectList 來(lái)處理請(qǐng)求:
@PostMapping("/list/{currentPage}/{pageSize}")
public Result getProjectList(@PathVariable int currentPage,
@PathVariable int pageSize,
@RequestBody Project project) {
IPage<Project> IPageProject = projectService.getProjectList(currentPage, pageSize, project);
return Result.success(IPageProject);
}@PathVariable注解用來(lái)獲取路徑上的參數(shù),@RequestBody用來(lái)獲取請(qǐng)求體。
最后把返回結(jié)果 IPageProject 放到統(tǒng)一結(jié)果里返回return Result.success(IPageProject)。
三、測(cè)試接口
自測(cè)一下查詢接口。目前 Project 表里有 14 條數(shù)據(jù)。
1. 測(cè)試分頁(yè)
localhost:8080/bloomtest/project/list/2/5,14條數(shù)據(jù)按理會(huì)分為 3 頁(yè),第二頁(yè)從 id=6 的數(shù)據(jù)開(kāi)始,每頁(yè)展示 5 條。

繼續(xù)往下,到 id=10 截止,共 5 條,結(jié)果正確。

另外,還可以看到返回內(nèi)容里還有幾個(gè)字段,都是分頁(yè)相關(guān):
- "total": 14 表示共 14 條記錄。
- "size": 5 表示每頁(yè)最大 5 條記錄。
- "current": 2 表示當(dāng)前是第 2 頁(yè)。
- "pages": 3 表示共 3 頁(yè)。
這些字段在前端使用分頁(yè)控件的時(shí)候需要用到。
2. 測(cè)試條件查詢
傳入查詢參數(shù):
{ "projectName": "測(cè)試項(xiàng)目5"}
測(cè)試模糊查詢:
{ "projectName": "6"}
結(jié)果正確。
以上就是springboot vue項(xiàng)目后端列表接口分頁(yè)模糊查詢的詳細(xì)內(nèi)容,更多關(guān)于springboot vue列表分頁(yè)模糊查詢的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Spring使用Jackson實(shí)現(xiàn)轉(zhuǎn)換XML與Java對(duì)象
這篇文章主要為大家詳細(xì)介紹了Spring如何使用Jackson實(shí)現(xiàn)轉(zhuǎn)換XML與Java對(duì)象,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-02-02
Java面試題沖刺第二十六天--實(shí)戰(zhàn)編程2
這篇文章主要為大家分享了最有價(jià)值的三道java實(shí)戰(zhàn)編程的面試題,涵蓋內(nèi)容全面,包括數(shù)據(jù)結(jié)構(gòu)和算法相關(guān)的題目、經(jīng)典面試編程題等,感興趣的小伙伴們可以參考一下2021-08-08
Logback配置文件這么寫(xiě),還說(shuō)你不會(huì)整理日志?
logback框架會(huì)默認(rèn)加載classpath下命名為logback-spring.xml或logback.xml的配置文件。這篇文章主要介紹了Logback配置文件寫(xiě)法,需要的朋友可以參考下2020-07-07
Java Swing JButton按鈕的實(shí)現(xiàn)示例
這篇文章主要介紹了Java Swing JButton按鈕的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12
JDK8中的HashMap初始化和擴(kuò)容機(jī)制詳解
這篇文章主要介紹了JDK8中的HashMap初始化和擴(kuò)容機(jī)制,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06
MyBatisPlus代碼生成器的原理及實(shí)現(xiàn)詳解
這篇文章主要為大家詳細(xì)介紹了MyBatisPlus中代碼生成器的原理及實(shí)現(xiàn),文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)MyBatisPlus有一定幫助,需要的可以參考一下2022-08-08
詳解Java LinkedHashMap與HashMap的使用
這篇文章主要通過(guò)幾個(gè)示例為大家詳細(xì)介紹了Java中LinkedHashMap與HashMap的常見(jiàn)使用和概述,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2022-10-10
Spring?Data?Jpa?復(fù)雜查詢方式總結(jié)(多表關(guān)聯(lián)及自定義分頁(yè))
這篇文章主要介紹了Spring?Data?Jpa?復(fù)雜查詢方式總結(jié)(多表關(guān)聯(lián)及自定義分頁(yè)),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02

