SpringBoot的SSMP整合案例---表现层消息一致性处理

SpringBoot的SSMP整合案例

之前文章我们完成了SSMP的实体类,数据层,业务层,表现层这四个层的开发。

后端的主要流程就是 Controller(表现层)=>Service(业务层)=>Dao(数据层)=>数据库

当然我们前后端分离开发也需要进行最后的数据交互的,也就是说是

前端=>Controller(表现层) 进行数据交互。 这个时候就有问题了,后端返回的数据格式不同

  • 增删改操作返回true和false

image.png

  • 查单条操作返回Json数据

image.png

  • 查全部操作返回Json数组

image.png

这样格式不同的数据大大增加了前端的工作负担,所以我们要学习秦王一统六国,进行 数据格式统一

表现层消息一致性处理

设计表现层返回结果的模型类,用于后端与前端进行数据格式统一,也称为 前后端数据协议 在controll包下创建一个utils包,在utils包下创建R类

import lombok.Data;

@Data
public class R {
    private Boolean flag;
    private Object data;
//空参构造
    public R(){
    }

    public R(Boolean flag,Object data){
    this.flag=flag;
    this.data=data;
    }
}
复制代码

表现层接口统一返回值类型结果

再对controller(表现层)进行代码改动,把返回值全部统一为R

controller类

package com.jikebensan.book.controller;

import com.jikebensan.book.controller.utils.R;
import com.jikebensan.book.domain.Book;
import com.jikebensan.book.service.IBookService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;



@RestController
@RequestMapping("/books")
public class BookController {
    @Autowired//注入业务层bean
    private IBookService iBookService;
    @GetMapping//获取全部
    public R getall(){
        return new R(true,iBookService.list());
    }

    @PostMapping//保存信息
    public R save(@RequestBody Book book){
        return new R(true,iBookService.save(book));

    }

    @PutMapping//修改信息
    public R  update(@RequestBody Book book){
        return new R(true,iBookService.modify(book));
    }

    @DeleteMapping("{id}")//删除
    public R  delete(@PathVariable Integer id){
        return new R(true,iBookService.delete(id));
    }

    @GetMapping("{id}")//根据id条件查询
    public R  getbyid(@PathVariable Integer id){
        return new R(true,iBookService.get(id));
    }


}
复制代码

这时候就会有人会问“为什么return new R(true,iBookService.save(book));,都要加一个判断条件结果为true?”

因为数据请求都已经到达业务层了,那就证明服务器在处理过程中没有出错,所以设置为true.

测试

编写完表现层,那我们就测一下吧。 测试代码如下

@Test
void  test3(){
   iBookService.delete(10);
}
复制代码

实现效果为删除数据库第10条数据

image.png

测试成功,删除失败,因为没有第10条数据。


原文:SpringBoot的SSMP整合案例---表现层消息一致性处理 - 掘金