一、写在前面
有时候怕自己脑子锈掉(傻掉),得总用,怎么用?学习呀,这样可以最大化调动思维。
出院有几天了,不是我自己懒,是我真的坐不了太长时间,基本是坐着半小时吗,躺着一小时.
这几天好些了,可以坐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
}
]
}
六、写在最后
简直太折磨人了,现在这老腰又开始疼了,有时间接着更新,今天可能有点累着了,好麻烦!!