准备-环境搭建
- 准备数据库表(dept,emp)
- 准备后端SpringBoot环境
需要依赖:
- Web起步依赖,数据库驱动依赖,Mybatis依赖,lombok依赖
- 配置文件application.properties中引入Mybatis配置信息,准备对应的实体类
- 后端采用三层架构的方式进行开(Controller,service,mapper)为了方便开发采用面向接口的方式进行开发
- 准备对应的Mapper,Service(接口,实现类),Controller基础结构
开发规范
前后端分离,需要按照接口文档的规范进行
-
REST
表述性状态转换,它是一种软件架构风格,定义URL的风格
注意:REST是风格,是约定方式,约定不是规定,可以打破
描述模块的功能通常使用复数,也就是加s的格式来描述,表示此类资源,而非单个资源,如:users,emps,books -
统一的响应结果
创建Result类创建统一的响应数据
开发流程
完成一个功能接口的开发流程:
- 查看页面原型,明确需求
- 阅读接口文档
- 分析整理思路
- 进行接口开发
- 进行接口测试
- 前后端联调
首先要想开发一个功能接口,首先应该先通过查看页面原型,明确该功能接口的需求,有一个大致的思路,然后阅读对应的开发文档,明确其大致的实现内容,整理一个清晰的思路,然后进行接口开发,开发好之后进行接口测试,最后前后端联调确定其功能完善,一个功能接口就开发好了
- 前后端联调
将前端工程后端工程启动进行联合测试
注解补充
如何限定请求的格式:
注解 @RequestMapping 中的属性method确定请求格式
@RequestMapping(value = "/depts",method = RequestMethod.GET)
这种格式太过于繁琐,再spring中,@RequestMapping提供了衍生注解 @GetMapping,同样的其他格式的参数都有相应的衍生注解
log.info("已删除数据:{}",id);
在此处一个大括号就是一个参数占位符,后边的id会自动显示再{}的位置
开发中地址重复问题:
我们可以通过将相同的请求路径抽取到类的上方来解决这些问题
更改之后如下所示:
这样一个完整的请求地址就是,类上的 @RequestMapping
的value属性+方法上的 @RequestMapping的value属性
向参数传入默认值:
注意:当GET请求中没有传参,如果我们要求没有参数默认设置为1,就需要注解 @RequestParam
@Slf4j
@RestController
public class EmpController {
@Autowired
private EmpService empService;
@GetMapping("/emps")
public Result page(@RequestParam(defaultValue = "1") Integer page,
@RequestParam(defaultValue = "10")Integer pageSize){
log.info("分页查询,参数:{},{}",page,pageSize);
pageBean pagebean=empService.page(page,pageSize);
return Result.success(pagebean);
}
}
- 分页查询插件PageHelper
通过分页插件可以大大简化在分页操作中出现的繁琐问题,提高代码开发效率
插件依赖:
<!--pagehelper分页插件的依赖-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.4.2</version>
</dependency>
在服务层将对应的分页语句进行修改
@Override
public pageBean page(Integer page, Integer pageSize) {
//1,设置分页参数
PageHelper.startPage(page,pageSize);
//2.进行正常的查询操作
List<Emp> list = empMapper.list();
Page<Emp> page1=(Page<Emp>) list;
//3.封装pageBean对象
pageBean pagebean=new pageBean(page1.getTotal(),page1.getResult());
return pagebean;
}
日期格式注解:
public Result page(@RequestParam(defaultValue = "1") Integer page,
@RequestParam(defaultValue = "10")Integer pageSize,
String name, Short gender,
@DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate begin,
@DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate end)