SSMP整合案例(8) Restful开发表现层接口

news2024/11/19 4:36:04

之前几篇文章后面 我们的数据层 和 业务层基本就搭好了
然后 我们就要处理表现层
表现层开发 我们就还是用之前讲过的 Restful
然后 用Postman来做我们接口的测试

那话不多说 直接开干
在启动类同目录下创建一个 controller 包
下面创建一个类 叫 BookController
在这里插入图片描述
BookController 参考代码如下

package com.example.bookconfig.controller;

import com.example.bookconfig.domain.book;
import com.example.bookconfig.service.IBookService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
@RequestMapping("/books")
public class BookController {

    @Autowired
    private IBookService IBookService;

    @GetMapping
    public List<book> getAll() {
        return IBookService.list();
    }
}

这里 我们声明了RestController开发模式 然后 声明公共路径为 books
条件装配了IBookService接口 就是我们上文写的service逻辑层接口
然后 定义了getAll查询全部方法 声明请求方式为 get 然后 调用了MP提供的list查询全部数据方法
然后 我们启动项目
在这里插入图片描述
因为 我们这里启动的端口是 80 就是默认端口
在这里插入图片描述
我们直接打开Postman
访问 http://localhost/books
在这里插入图片描述
可以看到 结果输出非常顺利

然后 就是搬运工的工作啦
我们先加一个添加的函数

@PostMapping
public boolean save(@RequestBody book book){
    return IBookService.save(book);
}

定义一个save函数 声明为 post类型请求 然后返回布尔类型通知是否操作成功
RequestBody 声明这个参数 在 body的json中拿
然后 我们通过Postman操作
记得 请求类型是post 地址是一样的 因为我们并没有单独设置地址 然后 下面参数对应配一下
参数是body的 格式 raw 中的 JSON 格式 然后 JSON怎么写应该不用教了吧
在这里插入图片描述
调用之后 我们的返回值就出来啦
在这里插入图片描述
然后 去看我们的数据库
在这里插入图片描述
我们的数据就加进去了
然后修改 直接用PutMapping 修改是 PUT类型请求 然后 调用方法基本和添加是一样的 调用MP的updateById函数
我们将刚才加的一条数据给他改了

@PutMapping
public boolean pudata(@RequestBody book book){
    return IBookService.updateById(book);
}

我们Postman 只是把类型改成 put 然后 加个id 因为他要根据id去改某一条
其他和添加都是一样的配置
在这里插入图片描述
运行结果如下
在这里插入图片描述
我们这里 也返回了个 true
我们来数据库查看一下
数据是已经修改完成的
在这里插入图片描述
然后 我们删除

请求类型 Delete 加了个路径参数 id
然后 调用MP的removeById函数

@DeleteMapping("{id}")
public boolean delete(@PathVariable Integer id){
    return IBookService.removeById(id);
}

我们Postman 请求类型肯定是Delete然后 后面跟上路径id 这里 我们删除id为11的
在这里插入图片描述
运行如下
在这里插入图片描述
查看数据是成功删掉了的
在这里插入图片描述
然后 我们加一个 按id查询的

@GetMapping("{id}")
public book getById(@PathVariable Integer id){
    return IBookService.getById(id);
}

到测试这边 get 请求 路径参数给一下
在这里插入图片描述
运行结果如下
在这里插入图片描述
然后 我们来做分页查询

但是 我们会发现 你还要转一下IPage的一个对象
这个挺不友好的啊
那我们改一下
service 下的 IBookService 抽象方法方法

IPage<book> getPage(int page,int pageSize);

在这里插入图片描述
传入两个数字类型变量 分别是 当前页 和 每页展示多少条

service包下的impl 下的 bookServiceI
实现这个函数
参考代码如下

package com.example.webdom.service.impl;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.example.webdom.dao.bookDao;
import com.example.webdom.domain.book;
import com.example.webdom.service.IBookService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class bookServiceI extends ServiceImpl<bookDao, book> implements IBookService {

    @Autowired
    private bookDao bookDao;

    @Override
    public IPage<book> getPage(int page, int pageSize) {
        IPage<book> pageDate = new Page(page,pageSize);
        bookDao.selectPage(pageDate,null);
        return pageDate;
    }
}

可能有人会说 你转IPage的操作放在controller不就好了 但我想说的是 专业的人做专业的事
我们逻辑 就尽量还是写在业务层了
然后在BookController中使用这个函数

@GetMapping("/page")
public IPage<book> getPage(@RequestParam int page,int pageSize) {
    System.out.println("BookController.getPage");
    return IBookService.getPage(page, pageSize);
}

这里 需要注意 我们在后面加上 page 是怕他和前面的接口重复了 因为如果不加 这个和查全部的接口肯定是相互冲突的
我们接收两个参数 查询第几页 一页查多少条
我们在 Postman 中测试代码如下
这里 要注意的是 我们方法单独声明了 一个 page的子路径 然后 下面类型 body下的 表单类型 因为是RequestParam 声明的参数
然后下面加上参数 我们要查询 第一页 每页展示两条
在这里插入图片描述
运行结果如下
在这里插入图片描述
非常的完美

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/691831.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

5-3图像处理经典案例:椒盐噪声运算处理(matlab程序)

1.简述 椒盐噪声也称为脉冲噪声&#xff0c;是图像中经常见到的一种噪声&#xff0c;它是一种随机出现的白点或者黑点&#xff0c;可能是亮的区域有黑色像素或是在暗的区域有白色像素&#xff08;或是两者皆有&#xff09;。椒盐噪声的成因可能是影像讯号受到突如其来的强烈干…

C++ 基础知识(1)

文章目录 写在前面1、第一个c程序1.1、输入输出及注释1.2、命名空间 2、变量、数组、指针2.1、基本类型2.2、数组与字符串2.3、指针2.4、指针空值2.5、引用 3、判断与循环3.1、if、else3.2、for、while 4、函数与参数4.1、函数与缺省参数4.2、函数重载4.3、内联函数 写在前面 …

什么是云安全访问服务

云安全访问服务(Cloud Secure Access Service&#xff0c;CSAS)是一种网络安全服务&#xff0c;旨在保护云环境下的应用程序和数据。它提供了一种安全访问云应用程序和数据的方式&#xff0c;同时也可以保护云中的敏感信息不被未经授权的用户访问。CSAS包括多种安全功能&#x…

从程序员到架构师——缓存层场景

读缓存 业务场景 如何将十几秒的查询请求优化成毫秒级&#xff1f; 这次项目针对的系统是一个电商系统。每个电商系统都有个商品详情页。一开始这个页面很简单&#xff0c;只包括商品的图片、介绍、规格、评价等。 刚开始&#xff0c;这个页面打开很快&#xff0c;系统运行…

控制台里的神秘代码 \033[

“\033[”这串字符在控制台里有特殊的应用。 在串口工具里&#xff08;如sscom&#xff09;看着是一串字符。 在控制台里却可以改变字体颜色&#xff0c;显示进度条&#xff0c;甚至字符动画。 1 字体控制 #include <stdio.h>int main() {printf("以下是测试文字&…

MM 采购凭证的交货成本 表

如上图的交货成本表再 EKBZ表里面

9.1 I/O模型

目录 I/O基本概念 同步和异步 阻塞和非阻塞 五种I/O模型 五种I/O模型比较 I/O基本概念 I/O即数据的读取&#xff08;接收&#xff09;或写入&#xff08;发送&#xff09;操作 通常用户进程中的一个完整I/O分为两个阶段 用户进程空间<-->内核空间 内核空间<--&…

【GPT】中文通用大模型梳理与测评(C-Eval 、AGIEval、MMLU、SuperCLUE)

文章目录 概述申请后直接使用大模型开源可本地部署 通识数据集测评&#xff08;C-Eval 、AGIEval、MMLU、SuperCLUE&#xff09;自媒体报道SuperCLUE&#xff1a;中文通用大模型综合性基准C-Eval&#xff1a;中英测评&#xff08;清华上交提出&#xff09;当前排名&#xff08;…

【Unity编辑器扩展】(三)PSD转UGUI Prefab, 一键拼UI/同步字体/自动9宫切图(完结篇)

工具效果&#xff1a; 第一步&#xff0c;把psd图层转换为可编辑的节点树&#xff0c;并自动解析UI类型、自动绑定UI子元素&#xff1a; 第二步, 点击“生成UIForm"按钮生成UI预制体 (若有UI类型遗漏可在下拉菜单手动点选UI类型)&#xff1a; 验证一键生成UI效果: 书接上…

微信支付接口常用参数及证书区分

注意&#xff1a;服务商模式下&#xff0c;均是使用服务商的以下信息 1. 证书 1.1商户api证书&#xff08;v2和v3接口都需要使用&#xff09; 1.1.1获取方式&#xff1a; 什么是商户API证书&#xff1f;如何获取商户API证书&#xff1f; &#xff08;商户api证书 &#xff…

【Spring AOP】面向切面编程,面向切面编程是面向对象编程的孪生兄弟嘛?且听我细细道来! ! !

前言: 大家好,我是良辰丫,面向切面编程和面向对象编程是两种几乎不同的编程方式,并不是所谓的孪生兄弟,但是我们可以说面向切面编程是面向对象编程的一种补充和完善,到底是什么意思呢?请跟随良辰的步伐往下瞧! ! !&#x1f48c;&#x1f48c;&#x1f48c; &#x1f9d1;个人主…

机器学习7:特征工程

在传统的软件工程中&#xff0c;核心是代码&#xff0c;然而&#xff0c;在机器学习项目中&#xff0c;重点则是特征——也就是说&#xff0c;开发人员优化模型的方法之一是增加和改进其输入特征。很多时候&#xff0c;优化特征比优化模型带来的增益要大得多。 笔者曾经参与过一…

【初识 Docker | 中级篇】 Docker 中使用 docker-compose 安装 Nacos

文章目录 前言一、安装 docker1、安装docker2、安装docker-compose 二、Nacos 单机安装1.创建配置文件1.1.创建目录1.2.创建nacos-logback.xml1.3.创建application.properties1.4.创建docker-compose.yml 2.nacos数据库表结构3.启动Nacos容器 总结 前言 可以按照以下步骤在 Do…

Text2Video-Zero:Text-to-Image扩散模型是Zero-Shot视频生成器

Text2Video-Zero: Text-to-Image Diffusion Models are Zero-Shot Video Generators Paper: https://arxiv.org/abs/2303.13439 Project: https://github.com/Picsart-AI-Research/Text2Video-Zero 原文链接&#xff1a;Text2Video-Zero:Text-to-Image扩散模型是Zero-Shot视频…

Splashtop 让按需远程支持流程更加流畅

Splashtop 一直采用9位 SOS 会话码的形式为用户提供按需支持&#xff1a; 1、技术员引导最终用户访问网站 sos.splashtop.com&#xff1b; 2、最终用户下载并运行小程序&#xff0c;然后发送9位会话码给技术员。 自2015年 Splashtop SOS 产品推出以来&#xff0c;我们一直采…

PLC数字量与模拟量信号输入/输出接线

西门子S7-1200 具有用于进行计算和测量、闭环回路控制和运动控制的集成技术&#xff0c;是一个功能非常强大的系统&#xff0c;可以实现多种类型的自动化任务。下面分享S7-1200系列数字量与模拟量信号输入/输出接线图给大家。 数字量信号模块输入输出接线 SM 1221 数字量输入…

分布式机器学习(Parameter Server)

分布式机器学习中&#xff0c;参数服务器(Parameter Server)用于管理和共享模型参数&#xff0c;其基本思想是将模型参数存储在一个或多个中央服务器上&#xff0c;并通过网络将这些参数共享给参与训练的各个计算节点。每个计算节点可以从参数服务器中获取当前模型参数&#xf…

高速电路设计系列分享-信号链精度分析(下)

文章目录 概要整体架构流程技术名词解释技术细节小结 概要 提示&#xff1a;这里可以添加技术概要 在任何设计中&#xff0c;信号链精度分析都可能是一项非常重要的任务&#xff0c;必须充分了解。之前&#xff0c; 我们讨论了在整个信号链累积起来并且最终会影响到转换器的多…

嵌入式软件测试笔记7 | 嵌入式软件测试中基于风险的测试策略如何开展?

7 | 嵌入式软件测试中基于风险的测试策略如何开展&#xff1f; 1 风险评估1.1 分析风险1.2 如何估计故障几率&#xff1f;1.3 导致故障几率较高的因素1.4 估计可能的损失1.5 风险评估的来源1.6 风险的处理 2 主测试计划中的策略2.1 目标2.2 制定策略的步骤2.3 选择质量特性2.4 …

美国签证办理需要户口本吗?

在申请美国签证时&#xff0c;有关所需文件的问题常常令人困惑。关于是否需要提供户口本&#xff0c;知识人网可以向您解释一下相关情况。 首先&#xff0c;需要明确的是&#xff0c;美国签证申请并不要求申请人提供户口本。美国领事馆和大使馆在签证申请过程中通常要求申请人提…