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