Restful开发规范
Restful是网络应用接口程序的接口设计风格,基于HTTP协议
GET:查询
POST:新增
PUT:修改
DELETE:删除
Restful是一种风格,可以不遵守
如何为请求参数设置默认值
可以在Service层判断是否为null,如果为true则给它赋值默认值
可以在Controller层参数列表添加@RequstParam注解的参数defaultValue为参数赋默认值
如何实现分页查询
分页查询请求参数为当前页数和每页条数,需要响应数据为总条数和每页数据,可以创建一个Page类用来封装响应数据
其Service层代码如下
public Page select(Integer page , Integer pageSize) {
Page pagex = new Page(empMapper.list((page-1)*pageSize, pageSize),(long) empMapper.count());
return pagex;
}
查询当前页数据需要用到mysql特有语法limit (起始索引,条数)
起始页数为(当前页数-1)*每页条数
其mapper层代码如下
获取总条数
@Select("select count(*) from emp ")
Integer count();
获取当前页数据
@Select("select * from emp limit index,pageSize")
List<Emp> list(Integer index,Integer pageSize);
利用分页插件PageHelper实现分页查询
配置起步依赖
设置分页参数,调用mapper接口获取页面数据,并用Page集合进行封装
调用Page集合方法getTotal()获取总条数,调用getResult()获取当前页面数据并封装在自己定义的PageBean对象中
Service层
mapper层
如何实现文件上传
文件上传是指将本地图片、视频、音频等文件上传到服务器,供其他用户浏览或下载的过程
使用 MultipartFile类型接收文件
文件存储方式有本地和云存储oss两种
本地上传文件
@PostMapping("/upload")
private Result upload(MultipartFile image) throws IOException {
String originalFilename = image.getOriginalFilename();
String uuid = UUID.randomUUID().toString();
String fileName=uuid+ originalFilename.substring(originalFilename.lastIndexOf("."));
image.transferTo(new File("C:\\Users\\dell\\Desktop\\abc\\"+fileName));
return Result.success();
}
云存储oss
导入依赖
<!--OSS Java SDK依赖-->
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.15.1</version>
</dependency>
<!--如果使用的是Java 9及以上的版本,则需要添加jaxb相关依赖-->
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.1</version>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
</dependency>
<!-- no more than 2.3.3-->
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-runtime</artifactId>
<version>2.3.3</version>
</dependency>
建立工具类
@Component
public class AliOSSUtils {
@Autowired
private AliOSSProperties aliOssProperties;
// value 注解一个个注入
// @Value("${aliyun.oss.endpoint}")
// private String endpoint;
// @Value("${aliyun.oss.accessKeyId}")
// private String accessKeyId;
// @Value("${aliyun.oss.accessKeySecret}")
// private String accessKeySecret;
// @Value("${aliyun.oss.bucketName}")
// private String bucketName;
/**
* 实现上传图片到OSS
*
* @param file
*/
public String upload(MultipartFile file) throws IOException {
//1 获取上传的文件的输入流
InputStream inputStream = file.getInputStream();
//2 获取原始文件名,使用UUID生成随机字符串,组装唯一文件名
String originalFilename = file.getOriginalFilename();
String fileName = UUID.randomUUID().toString() + originalFilename.substring(originalFilename.lastIndexOf("."));
//3 上传文件到 OSS
OSS ossClient = new OSSClientBuilder().build(aliOssProperties.getEndpoint(), aliOssProperties.getAccessKeyId(), aliOssProperties.getAccessKeySecret());
ossClient.putObject(aliOssProperties.getBucketName(), fileName, inputStream);
//4 获取文件访问路径
String url = aliOssProperties.getEndpoint().split("//")[0] + "//" + aliOssProperties.getBucketName() + "." + aliOssProperties.getEndpoint().split("//")[1] + "/" + fileName;
//5 关闭ossClient客户端,返回文件在OSS存储空间的地址
ossClient.shutdown();
return url;
}
}
注解补充
@MapperScan:声明在启动类上,指明mapper文件所在包位置,可以不用重复给mapper接口声明@mapper
@RqestMapping在Controller类上声明请求路径的公共部分,减少路径重复书写
@value实现参数配置化
value 注解一个个注入
// @Value("${aliyun.oss.endpoint}")
// private String endpoint;
// @Value("${aliyun.oss.accessKeyId}")
// private String accessKeyId;
// @Value("${aliyun.oss.accessKeySecret}")
// private String accessKeySecret;
// @Value("${aliyun.oss.bucketName}")
// private String bucketName;
使用@configrationProperties注解实现参数配置化
使用configrationProperties注解实现参数配置化
@Data
@Component
@ConfigurationProperties(prefix = "aliyun.oss")
public class AliOSSProperties {
private String endpoint;
private String accessKeyId;
private String accessKeySecret;
private String bucketName;
}
利用yml或yaml实现文件配置
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver #驱动类名称
username: root #数据库连接username
password: 1234 #数据库连接password
url: jdbc:mysql://localhost:3306/tlias #数据库连接url
servlet:
multipart:
max-file-size: 10MB #配置单个文件最大上传大小
max-request-size: 100MB #配置多个文件最大上传大小
mybatis:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #配置mybatis日志
map-underscore-to-camel-case: true #开启mybatis驼峰命名自动映射
aliyun:
oss: #自定义阿里云oss配置信息
endpoint: https://oss-cn-hangzhou.aliyuncs.com
access-key-id: LTAI5tKaYNrUvHganqpZCcV1
access-key-secret: MVCTPFhCu2qkk7CE7mzeMwCAJ3S3e1
bucket-name: chenshuai-web
三种配置文件优先级
properties文件>yml>xml
标签:web,springboot,oss,private,Value,aliyun,mybatis,aliOssProperties,String From: https://www.cnblogs.com/zlsame/p/17316894.html