温州公司做网站,wordpress数据库说明,书籍类wordpress主题,做网站可以用哪些语言五、案例
1. 开发规范—Restful
REST#xff08;Representational State Transfer#xff09;#xff0c;表述性状态转换#xff0c;是一种软件架构风格 注#xff1a;
REST是风格#xff0c;是约定方式#xff0c;不是规定#xff0c;可以打破描述模块的功能通常使…五、案例
1. 开发规范—Restful
RESTRepresentational State Transfer表述性状态转换是一种软件架构风格 注
REST是风格是约定方式不是规定可以打破描述模块的功能通常使用复数表示此类资源而非单个资源。如users、emps、books
2. 部门管理的查询、删除、新增以及前后端联调
体会
虽然之前的学习过程中已经跟着视频教程一边敲了代码但是实际案例会把之前学习的内容连贯起来自己再写的时候还是不是很熟悉多多练习注解可以简化代码要牢记每个注解的英文也对应着其功能的语义
本质三层架构IOC控制反转DI依赖注入
新知识
Slf4j/Xslf4j可以代替创建日志对象直接使用RequestMapping(“父级”)如果后面的方法上的都要调用这级可以把他单另出来注解在类的上方Mapping()可以根据请求类型细分为GetMapping()、PostMapping、DeleteMapping()等
流程
Controller接受请求以及参数——Service处理数据修改格式或者添加一些字段——Mapper与数据库交互增删改查——Serveive——Controller响应请求
3. 员工管理
分页查询
普通实现以及PageHelper分页插件实现
分页插件引入依赖 dependencygroupIdcom.github.pagehelper/groupIdartifactIdpagehelper-spring-boot-starter/artifactIdversion1.4.6/version/dependencyMapper
public interface EmpMapper {
// // 查询总记录数
// Select(select count(*) from emp)
// public long count();
//
// // 分页查询获取列表数据
//
// Select(select * from emp limit #{start}, #{pageSize})
// public ListEmp page(Integer start, Integer pageSize);// 使用分页插件实现Select(select * from emp)public ListEmp list();
}Service
public class EmpServiceImpl implements EmpService {Autowiredprivate EmpMapper empMapper;// Override
// public PageBean page(Integer page, Integer pageSize) {
// // 1. 获取总记录数
// long count empMapper.count();
// // 2. 获取分页查询结果列表Integer start (page - 1) * pageSize;ListEmp empList empMapper.page(start, pageSize);
// ListEmp empList empMapper.page((page - 1) * pageSize, pageSize);
// // 3. 封装PageBean对象
// PageBean pageBean new PageBean(count, empList);
// return pageBean;
// }Overridepublic PageBean page(Integer page, Integer pageSize) {//1. 设置分页参数PageHelper.startPage(page, pageSize);//2. 执行查询ListEmp empList empMapper.list();PageEmp p (PageEmp) empList;// 3. 封装PageBean对象PageBean pageBean new PageBean(p.getTotal(), p.getResult());return pageBean;}
}RestController
public class EmpController {Autowiredprivate 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遍历
新增员工——没有特殊的点
注意 熟悉三层架构的流程就好
4. 文件上传
概念 文件上传是指将本地图片、视频、音频等文件上传到服务器供其他用户浏览或下载的过程
前端准备工作 后端准备工作
Controller中参数添加MultipartFile imageMutipartFile是类型image是名字与前端一致不一致的话使用RequestParam
MultiPartfile常用方法 错误
Whitelabel Error Page
解决
dependencygroupIdorg.apache.portals.pluto.templating/groupIdartifactIdthymeleaf-mvc-portlet-api/artifactIdversion3.1.1/version
/dependency注意
在SpringBoot中文件上传默认单个文件允许最大大小为1M。如需上传大文件可以进行如下配置
# 配置单个文件文件最大上传大小
spring.servlet.multipart.max-file-size10MB
# 配置单个请求最大大小的限制一次请求中上传的多个文件
spring.servlet.multipart.max-request-size100MB1本地存储上传文件的实例
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\tempImageimage.transferTo(new File(E:\\want\\JAVA\\tempImage\\ newFileName));return Result.success();}
}2阿里云OSS对象存储服务Object Storage Service
概念 云存储服务
作用 通过网络随时存储和调用包括文本、图片、音频和视频在内的各种文件
使用第三方服务的通用思路
准备参照官方SDK编写入门程序Software Development Kit软件开发工具包包括辅助软件开发的依赖jar包、代码示例等都可以叫做SDK。Bucket存储空间就是个存储东西的容器集成使用
5. 配置文件
1properties配置文件
原问题 参数属于硬编码——如果有需求要修改需要修改源代码然后重新编译不便于维护及管理
解决 2yml配置文件.yml/.yaml 对比不同的配置文件格式
XML臃肿properties层次结构不清晰yml简洁、数据为中心——推荐
yml基本语法
大小写敏感数值前面必须有空格作为分隔符使用缩进表示层级关系缩进时不能用Tab只能用空格缩进的空格数目不重要只要相同层级的元素左侧对齐#表示注释从这个字符一直到行尾都会被解析器忽略
属性的自动注入
ConfigurationProperties(prefix“属性的前缀”)
使用前需要引入依赖可选 过程
将属性封装成一个实体类加入注解Data、Component、ConfigurationProperties在工具类中Autowired自动注入一个对象就可