【测试开花】三、项目管理-后端-实现列表接口(含分页、模糊查询)

简介: 【测试开花】三、项目管理-后端-实现列表接口(含分页、模糊查询)

基于 springboot+vue 的测试平台开发继续更新。


打开项目管理,就需要看到列表里展示项目数据,比如这样(截图是这个前端框架的demo,仅作示意):


1268169-20210916121810471-309118025.png


那么对应到我们平台的项目管理功能,就需要有:


  • 列表展示添加的项目数据
  • 可以通过项目名称查询指定的项目
  • 新增项目
  • 编辑项目
  • 其他功能...


新增项目的接口已经实现,接下来实现项目列表接口。


这个列表接口,我需要它可以同时满足分页以及条件查询,路径大概为/list/{currentPage}/{pageSize}


其中 currentPage 表示当前是第几页,pageSize 表示每页大小。


比如/list/1/5},就说明我要查第 1 页,每页展示 5 条数据。


一、分页插件


mybatis-plus 提供了一些很实用的插件,其中就包括分页插件。


新建一个配置类 MybatisPlusConfig 用于存放 mybatis-plus 相关插件配置,并且注册分页插件:


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 {
    // 分页插件
    @Bean
    public PaginationInterceptor paginationInterceptor() {
        return new PaginationInterceptor();
    }
}


二、实现接口


实现的套路还是之前的那样,说到这,其实 mybatis-plus 还提供了代码生成器 AutoGenerator。


通过它可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码,提升开发效率。


但是这里我并不要使用,因为本来就是学习的过程,多写写加深印象。另外本工程量实在也不大,就没必要用了。


1. 编写 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) {
        // 创建分页对象,current为当前页数,size为每页最大记录数
        Page<Project> pageProject = new Page<>(currentPage, pageSize);
        QueryWrapper<Project> wrapperProject = new QueryWrapper<>();
        // 第一个参数为是否执行条件,为true则执行该条件
        wrapperProject.like(StringUtils.isNoneBlank(project.getProjectName()), "projectName", project.getProjectName());
        // 调用分页查询方法,传入分页对象-pageProject,wrapperProject是构造条件对象
        return projectDAO.selectPage(pageProject, wrapperProject);
    }


  • 创建分页对象 Page,它有 2 个参数,其中 current 为当前页数,size 则为每页最大记录数。
  • 因为 getProjectList 方法也要实现条件查询,所以创建条件查询对象。
  • wrapperProject.like 使用模糊查询,like 方法可以有 3 个参数,第一个参数为是否执行条件,当 projectName 为空就不执行。
  • 最后调用 selectPage 方法,传入分页对象-pageProject 和 构造条件对象 wrapperProject。


返回的对象类型是 IPage,包名也贴出来了。


2. 编写 Controller 层


在之前的 ProjectController 类下新增控制方法 getProjectList 来处理请求:


@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注解用来获取路径上的参数,@RequestBody用来获取请求体。


最后把返回结果 IPageProject 放到统一结果里返回return Result.success(IPageProject)


三、测试接口


自测一下查询接口。目前 Project 表里有 14 条数据。


1. 测试分页


localhost:8080/bloomtest/project/list/2/5,14条数据按理会分为 3 页,第二页从 id=6 的数据开始,每页展示 5 条。


1268169-20210916124620479-1936665997.png


继续往下,到 id=10 截止,共 5 条,结果正确。


1268169-20210916124721007-658973523.png


另外,还可以看到返回内容里还有几个字段,都是分页相关:


  • "total": 14 表示共 14 条记录。
  • "size": 5 表示每页最大 5 条记录。
  • "current": 2 表示当前是第 2 页。
  • "pages": 3 表示共 3 页。


这些字段在前端使用分页控件的时候需要用到。


2. 测试条件查询


传入查询参数:


{
    "projectName": "测试项目5"
}


1268169-20210916182256478-106393380.png


测试模糊查询:


{
    "projectName": "6"
}


1268169-20210916182404508-1385584439.png


结果正确。

相关文章
|
1月前
|
关系型数据库 MySQL 测试技术
记录一次后端接口抖动的排查过程
某天下午,测试新功能时发现页面接口偶尔变慢,平均十次调用中有三到四次出现3秒以上的延迟。排查了接口、数据库和服务器资源后未发现问题,最终锁定为K8s节点的负载均衡策略导致。测试环境仅有一个公网IP,SLB轮询四个Pod(其中三个为空),造成周期性延迟。移除空Pod后问题解决。
52 5
|
5月前
|
SQL JSON Java
springboot 如何编写增删改查后端接口,小白极速入门,附完整代码
本文为Spring Boot增删改查接口的小白入门教程,介绍了项目的构建、配置YML文件、代码编写(包括实体类、Mapper接口、Mapper.xml、Service和Controller)以及使用Postman进行接口测试的方法。同时提供了SQL代码和完整代码的下载链接。
springboot 如何编写增删改查后端接口,小白极速入门,附完整代码
|
4月前
|
Java 测试技术 程序员
「测试线排查的一些经验-上篇」&& 后端工程师
「测试线排查的一些经验-上篇」&& 后端工程师
41 1
|
6月前
|
Java 程序员 编译器
作为后端开发,感受下接口带来的魅力!🔥🔥
在一场大厂面试中,小南被问及何时选用接口,何时采用抽象类。一位拥有24K粉丝的博主给出解答:选择取决于需求——接口定义多个类需遵守的契约,而抽象类则用于创建共享实现的基类。有时两者结合使用,通过抽象类实现接口以确保契约并提供通用功能。此外,小南还分享了关于抽象类的深入探讨,包括子类如何正确调用父类构造函数、访问父类成员以及父类不可访问的方法等细节。最后,他提出一个关于接口与抽象类差异的小测验,并邀请读者关注他的开源项目《Java学习进阶指南》,旨在帮助Java开发者更好地掌握核心知识和面试要点。
198 3
作为后端开发,感受下接口带来的魅力!🔥🔥
|
6月前
|
安全 中间件 项目管理
Django 后端架构开发:分页器到中间件开发
Django 后端架构开发:分页器到中间件开发
74 1
|
6月前
|
小程序 JavaScript Java
微信小程序+SpringBoot接入后台服务,接口数据来自后端
这篇文章介绍了如何将微信小程序与SpringBoot后端服务进行数据交互,包括后端接口的编写、小程序获取接口数据的方法,以及数据在小程序中的展示。同时,还涉及到了使用Vue搭建后台管理系统,方便数据的查看和管理。
微信小程序+SpringBoot接入后台服务,接口数据来自后端
|
7月前
|
开发框架 前端开发 JavaScript
ABP框架测试信息---Winform端、动态网站、Vue&Element管理后端等
ABP框架测试信息---Winform端、动态网站、Vue&Element管理后端等
|
6月前
|
存储 缓存 关系型数据库
Django后端架构开发:缓存机制,接口缓存、文件缓存、数据库缓存与Memcached缓存
Django后端架构开发:缓存机制,接口缓存、文件缓存、数据库缓存与Memcached缓存
146 0
|
6月前
|
SQL Java 数据库连接
后端框架的学习----mybatis框架(5、分页)
这篇文章介绍了如何在MyBatis框架中实现分页功能,包括使用SQL的`limit`语句进行分页和利用MyBatis的`RowBounds`对象进行分页的方法。
|
6月前
|
开发框架 前端开发 API
使用代码生成工具快速开发应用-结合后端Web API提供接口和前端页面快速生成,实现通用的业务编码规则管理
使用代码生成工具快速开发应用-结合后端Web API提供接口和前端页面快速生成,实现通用的业务编码规则管理

热门文章

最新文章