springboot-web-mybatis

发布时间 2023-04-14 14:38:41作者: zl子路

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