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

之前几篇文章后面 我们的数据层 和 业务层基本就搭好了
然后 我们就要处理表现层
表现层开发 我们就还是用之前讲过的 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 声明的参数
然后下面加上参数 我们要查询 第一页 每页展示两条
在这里插入图片描述
运行结果如下
在这里插入图片描述
非常的完美

猜你喜欢

转载自blog.csdn.net/weixin_45966674/article/details/131412659
今日推荐