REST(Representational State Transfer),表述性状态转换,是一种软件架构风格
注:
体会:🌅
本质:三层架构+IOC(控制反转)+DI(依赖注入)
新知识:
流程:
Controller接受请求(,以及参数)——>Service处理数据(修改格式或者添加一些字段)——>Mapper与数据库交互(增删改查)——>Serveive——>Controller响应请求
分页查询
普通实现以及PageHelper分页插件实现
分页插件引入依赖
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.4.6</version>
</dependency>
@Mapper
public interface EmpMapper {
// // 查询总记录数
// @Select("select count(*) from emp")
// public long count();
//
// // 分页查询获取列表数据
//
// @Select("select * from emp limit #{start}, #{pageSize}")
// public List<Emp> page(Integer start, Integer pageSize);
// 使用分页插件实现
@Select("select * from emp")
public List<Emp> list();
}
@Service
public class EmpServiceImpl implements EmpService {
@Autowired
private EmpMapper empMapper;
// @Override
// public PageBean page(Integer page, Integer pageSize) {
// // 1. 获取总记录数
// long count = empMapper.count();
// // 2. 获取分页查询结果列表
Integer start = (page - 1) * pageSize;
List<Emp> empList = empMapper.page(start, pageSize);
// List<Emp> empList = empMapper.page((page - 1) * pageSize, pageSize);
// // 3. 封装PageBean对象
// PageBean pageBean = new PageBean(count, empList);
// return pageBean;
// }
@Override
public PageBean page(Integer page, Integer pageSize) {
//1. 设置分页参数
PageHelper.startPage(page, pageSize);
//2. 执行查询
List<Emp> empList = empMapper.list();
Page<Emp> p = (Page<Emp>) empList;
// 3. 封装PageBean对象
PageBean pageBean = new PageBean(p.getTotal(), p.getResult());
return pageBean;
}
}
@RestController
public class EmpController {
@Autowired
private EmpService empService;
// 分页查询
@GetMapping("/emps")
public Result page(@RequestParam(defaultValue = "1") Integer page, @RequestParam(defaultValue = "10") Integer pageSize) {
// 调用service分页查询
PageBean pageBean = empService.page(page, pageSize);
return Result.success(pageBean);
}
}
分页条件查询——只要把select放在xml文件中,进行相应的修改就可以
删除员工——数组<foreach>遍历
新增员工——没有特殊的点
注意: 熟悉三层架构的流程就好
概念: 文件上传是指将本地图片、视频、音频等文件上传到服务器,供其他用户浏览或下载的过程
前端准备工作:
后端准备工作:
Controller中参数添加MultipartFile image(MutipartFile是类型,image是名字,与前端一致,不一致的话使用@RequestParam)
MultiPartfile常用方法
错误:
Whitelabel Error Page
解决:
<dependency>
<groupId>org.apache.portals.pluto.templating</groupId>
<artifactId>thymeleaf-mvc-portlet-api</artifactId>
<version>3.1.1</version>
</dependency>
注意:
在SpringBoot中,文件上传,默认单个文件允许最大大小为1M。如需上传大文件,可以进行如下配置
# 配置单个文件文件最大上传大小
spring.servlet.multipart.max-file-size=10MB
# 配置单个请求最大大小的限制(一次请求中上传的多个文件)
spring.servlet.multipart.max-request-size=100MB
1)本地存储上传文件的实例
@RestController
public class UploadController {
@PostMapping("/upload")
public Result uploda(String username, Integer age, MultipartFile image) throws Exception {
log.info("文件上传:{},{},{}", username, age, image);
// 使用MutiparFile中的方法获取文件的名字
String originalFilename = image.getOriginalFilename();
// 构造唯一的文件名(不能重复)——uuid(通用唯一识别码,长度固定的字符串)
// 首先获取原始文件的扩展名
int index = originalFilename.lastIndexOf(".");
String extname = originalFilename.substring(index);
// 其次生成UUID并与原始文件后缀名进行拼接
String newFileName = UUID.randomUUID().toString() + extname;
// 将文件存储在服务器的磁盘目录中E:\want\JAVA\tempImage
image.transferTo(new File("E:\\want\\JAVA\\tempImage\\" + newFileName));
return Result.success();
}
}
2)阿里云OSS(对象存储服务,Object Storage Service)
概念: 云存储服务
作用: 通过网络随时存储和调用包括文本、图片、音频和视频在内的各种文件
使用第三方服务的通用思路:
1)properties配置文件
原问题: 参数属于硬编码——如果有需求要修改,需要修改源代码,然后重新编译,不便于维护及管理
解决:
2)yml配置文件(.yml/.yaml)
对比不同的配置文件格式:
yml基本语法:
属性的自动注入:
@ConfigurationProperties(prefix=“属性的前缀”)
使用前需要引入依赖(可选)
过程: