首页 > 其他分享 >springboot-web-mybatis

springboot-web-mybatis

时间:2023-04-14 14:46:24浏览次数:37  
标签:web springboot oss private Value aliyun mybatis aliOssProperties String

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

相关文章

  • Java SpringBoot 中,动态执行 bean 对象中的方法
    根据不同的条件,调用不同的bean对象,执行对象中的方法SpringUtils工具类packagecom.vipsoft.web.utils;importcn.hutool.core.util.ArrayUtil;importorg.springframework.aop.framework.AopContext;importorg.springframework.beans.BeansException;importorg.sprin......
  • mybatis 连接 ORACLE
     application-common-dev.ymlspring:profiles:include:[common]main:allow-bean-definition-overriding:true#Redis服务器IPredis:host:127.0.0.1#Redis服务器连接端口port:6379#Redis服务器连接密码password:testj......
  • WebRTC学习记录以及以Janus-gateway流程增进理解
    这篇文章是我按照我的学习习惯记录的文章,借鉴了许多大佬的学习框架,以及独自去验证正确性的一个过程Web实时通信(Real-TimeCommunication)概述https://webrtcforthecurious.com/zh/docs/01-what-why-and-how/看完只有一个感受:为什么音视频要扯上web,其中的协议大部分都来自web的......
  • Go For Web:一篇文章带你用 Go 搭建一个最简单的 Web 服务、了解 Golang 运行 web 的原
    前言:本文作为解决如何通过Golang来编写Web应用这个问题的前瞻,对Golang中的Web基础部分进行一个简单的介绍。目前Go拥有成熟的Http处理包,所以我们去编写一个做任何事情的动态Web程序应该是很轻松的,接下来我们就去学习了解一些关于Web的相关基础,了解一些概念,以及......
  • FreeMarker_web.xml
    freemarker的解析,实际上就是一个专用的servlet,你需要在web.xml中配置<?xmlversion="1.0"encoding="UTF-8"?><web-appversion="2.4"xmlns="http://java.sun.com/xml/ns/j2ee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-in......
  • WebSocket 一些简单地记录
    WebSocket是HTML5开始提供的一种在单个TCP连接上进行全双工通讯的协议。全双工(FullDuplex)是通讯传输的一个术语。通信允许数据在两个方向上同时传输,它在能力上相当于两个单工通信方式的结合。单工就是在只允许甲方向乙方传送信息,而乙方不能向甲方传送半双工(H......
  • SpringBoot 集成 MybatisPlus 八——插件
    1Mybatis插件机制Mybatis插件是对Executor、StatementHandler、ParameterHandler、ResultSetHandler这四个接口上的方法进行拦截,利用JDK动态代理机制,为这些接口的实现类创建代理对象,在执行方法时,先去执行代理对象的方法,从而执行自己编写的拦截逻辑。ExecutorMyBatis的内部执行器......
  • Android 平台使用 appium 自动化操作 webView 的经验
    更多内容见草稿:https://wkmcyz.notion.site/Appium-H5-c9c287855ef74ef0ae5d8f819da3923f本文章主要介绍在Android平台上使用appium对app内的webView进行自动化操作上的一些知识,包括一些配置和可以进行的操作等。需要读者:熟悉如何使用appium进行nativeapp的自动......
  • 如何给WebClip签名
    先贴大佬的链接https://blog.csdn.net/slatop/article/details/124212126准备材料1.开发者证书,用作导出私钥、签名证书2.Apple开发者公钥证书,证书下是已经过期的,需要从ApplePKI-Apple重新下载安装AppleWorldwideDeveloperRelationsCertificationAuthority需要使用......
  • MyBatisPlus解决逻辑删除与唯一索引的兼容问题
    需求背景比如有张用户表,在插入或者更新数据的时候,我们需要用户名称(username),不能重复。我们首先考虑的是给该字段创建唯一索引createuniqueindexuni_usernameonuser(username)似乎这样就可以了,然而事情并没有那么简单。因为我们表中的数据在删除的时候不会真的的删......