• 寻找写代码感觉(六)之列表查询接口开发及返回结果的统一处理


    一、写在前面

    有时候怕自己脑子锈掉(傻掉),得总用,怎么用?学习呀,这样可以最大化调动思维。

    出院有几天了,不是我自己懒,是我真的坐不了太长时间,基本是坐着半小时吗,躺着一小时.

    这几天好些了,可以坐1个多小时了,但是腰还是疼,突然感觉,能活着太不容易了。

    这篇文章,停滞了有两天了,今天还是坚持下要接着更新,不管怎样,还是要坚持的。

    这种感觉怎么说呢,就像偶得武功秘籍一样,看到上面的武功太精秒了,其实我知道,源于我对编程的热爱,仅此问而罢了,与其他无关。

    二、准备数据

    简答你得说我在数据库里准备一些数据,sql如下:

    #电子书表
    
    drop table if exists 'ebook';
    
    create table ebook
    (
    
        `id`            bigint NOT NULL comment 'id',
        `name`          varchar(50) COMMENT '名称',
        `category1 _id` bigint comment '分类1',
        `category2_ id` bigint comment '分类2',
        `description`   varchar(200) comment '描述',
        `cover`         varchar(200) comment '封面',
        `doc_ count`    int comment ' 文档数',
        `view_ count`   int comment ' 阅读数',
        `vote_ count`   int comment '点赞数',
        PRIMARY KEY (`id`)
    
    ) engine = innodb default charset = utf8mb4 comment ='电子书';
    
    insert into ebook (id, name, description) values (1,' Spring Boot入门教程 ',' 零基础入门Java开发,企业级应用开发最佳首选框架');
    insert into ebook(id, name, description) values (2,' Vue 入门教程 ',' 零基础入门Vue开发,企业级应用开发最佳#电子书表');
    insert into ebook(id, name, description) values (3,' Web 自动化入门教程 ',' Web自动化测试与Selenium 3.0从入门到实践 #电子书表');
    

    三、使用代码生成器生成实体及接口

    不会用?

    简单,传送门寻找写代码感觉(五)之Mybatis官方代码生成器的使用

    写到这里,我突然发现,好像比Spring Boot JPA好些呢,是因为不用写SQL嘛,哈哈哈

    生成准备XML,示例如下:

    <table tableName="ebook" domainObjectName="EBook"/>
    

    四、编写Service及接口代码

    1、编写Service代码

    Service示例代码如下:

    package com.rongrong.wiki.service;
    
    import com.rongrong.wiki.domain.EBook;
    import com.rongrong.wiki.mapper.EBookMapper;
    import org.springframework.stereotype.Service;
    
    import javax.annotation.Resource;
    import java.util.List;
    
    /**
     * @author rongrong
     * @version 1.0
     * @description
     * @date 2021/10/13 10:09
     */
    @Service
    public class EBookService {
    
        @Resource
        private EBookMapper eBookMapper;
    
        public List<EBook> list() {
            return eBookMapper.selectByExample(null);
        }
    }
    
    

    2、统一返回结果处理

    统一处理返回结果的好处:

    为了让前端能够统一处理逻辑(登录、权限校验等等),需要统一后端的返回值,简单来说就是包装下哈哈,就像糖果一样,有个包装就是好看,哈哈哈,看到这的兄弟别打我哈

    示例代码如下:;

    package com.rongrong.wiki.resp;
    
    public class CommonResp<T> {
    
        /**
         * 业务上的成功或失败
         */
        private boolean success = true;
    
        /**
         * 返回信息
         */
        private String message;
    
        /**
         * 返回泛型数据,自定义类型
         */
        private T content;
    
        public boolean getSuccess() {
            return success;
        }
    
        public void setSuccess(boolean success) {
            this.success = success;
        }
    
        public String getMessage() {
            return message;
        }
    
        public void setMessage(String message) {
            this.message = message;
        }
    
        public T getContent() {
            return content;
        }
    
        public void setContent(T content) {
            this.content = content;
        }
    
        @Override
        public String toString() {
            final StringBuffer sb = new StringBuffer("ResponseDto{");
            sb.append("success=").append(success);
            sb.append(", message='").append(message).append('\'');
            sb.append(", content=").append(content);
            sb.append('}');
            return sb.toString();
        }
    }
    
    

    3、编写接口

    示例代码如下:

    package com.rongrong.wiki.controller;
    
    import com.rongrong.wiki.domain.EBook;
    import com.rongrong.wiki.resp.CommonResp;
    import com.rongrong.wiki.service.EBookService;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    import javax.annotation.Resource;
    import java.util.List;
    
    /**
     * @author longrong.lang
     * @version 1.0
     * @description
     */
    @RestController
    @RequestMapping("/ebook")
    public class EBookController {
    
        @Resource
        private EBookService eBookService;
    
        @GetMapping("/list")
        public CommonResp list() {
            CommonResp<List<EBook>> resp = new CommonResp<>();
            List<EBook> list = eBookService.list();
            resp.setMessage("执行查询成功!");
            resp.setContent(list);
            return resp;
        }
    }
    
    

    五、测试接口

    结果如下:

    GET http://localhost:8888/ebook/list
    
    HTTP/1.1 200 
    Content-Type: application/json
    Transfer-Encoding: chunked
    Date: Wed, 13 Oct 2021 09:35:57 GMT
    Keep-Alive: timeout=60
    Connection: keep-alive
    
    {
      "success": true,
      "message": "执行查询成功!",
      "content": [
        {
          "id": 1,
          "name": " Spring Boot入门教程 ",
          "category1Id": null,
          "category2Id": null,
          "description": " 零基础入门Java开发,企业级应用开发最佳首选框架",
          "cover": null,
          "docCount": null,
          "viewCount": null,
          "voteCount": null
        },
        {
          "id": 2,
          "name": " Vue 入门教程 ",
          "category1Id": null,
          "category2Id": null,
          "description": " 零基础入门Vue开发,企业级应用开发最佳#电子书表",
          "cover": null,
          "docCount": null,
          "viewCount": null,
          "voteCount": null
        },
        {
          "id": 3,
          "name": " Web 自动化入门教程 ",
          "category1Id": null,
          "category2Id": null,
          "description": " Web自动化测试与Selenium 3.0从入门到实践 #电子书表",
          "cover": null,
          "docCount": null,
          "viewCount": null,
          "voteCount": null
        }
      ]
    }
    

    六、写在最后

    简直太折磨人了,现在这老腰又开始疼了,有时间接着更新,今天可能有点累着了,好麻烦!!

  • 相关阅读:
    PID 不能控制哪些系统?
    矩阵正定、负定、半正定、半负定
    KKT条件(不等式约束优化)
    腾讯OCR身份证正面识别
    小程序
    tomcat相关
    linux安装tomcat
    linux防火墙
    nginx操作
    Clean Code
  • 原文地址:https://www.cnblogs.com/longronglang/p/15403253.html
Copyright © 2020-2023  润新知