尋找寫程式碼感覺(六)之列表查詢介面開發及返回結果的統一處理
阿新 • • 發佈:2021-10-13
一、寫在前面
有時候怕自己腦子鏽掉(傻掉),得總用,怎麼用?學習呀,這樣可以最大化調動思維。
出院有幾天了,不是我自己懶,是我真的坐不了太長時間,基本是坐著半小時嗎,躺著一小時.
這幾天好些了,可以坐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
}
]
}
六、寫在最後
簡直太折磨人了,現在這老腰又開始疼了,有時間接著更新,今天可能有點累著了,好麻煩!!
優秀不夠,你是否無可替代
軟體測試交流QQ群:721256703,期待你的加入!!
歡迎關注我的微信公眾號:軟體測試君