注:本文所用到的版本- MySql 8.0.28
- SpringBoot 2.7.2
复制代码准备工作 :建表 、pom.xml导入依赖 、application.yml 配置
- CREATE TABLE `rna` (
- `id` int NOT NULL AUTO_INCREMENT,
- `name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
- `card_img` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
- `card` varchar(18) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
- `sex` varchar(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
- `phone` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
- `check` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
- `check_date` datetime DEFAULT NULL,
- `result` varchar(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
- PRIMARY KEY (`id`)
- ) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
复制代码- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
- </dependency>
- <dependency>
- <groupId>org.projectlombok</groupId>
- <artifactId>lombok</artifactId>
- <optional>true</optional>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-test</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>mysql</groupId>
- <artifactId>mysql-connector-java</artifactId>
- </dependency>
- <dependency>
- <groupId>com.alibaba</groupId>
- <artifactId>druid</artifactId>
- <version>1.2.11</version>
- </dependency>
- <dependency>
- <groupId>org.mybatis.spring.boot</groupId>
- <artifactId>mybatis-spring-boot-starter</artifactId>
- <version>2.2.2</version>
- </dependency>
- <dependency>
- <groupId>com.github.pagehelper</groupId>
- <artifactId>pagehelper-spring-boot-starter</artifactId>
- <version>1.4.2</version>
- </dependency>
- <dependency>
- <groupId>commons-fileupload</groupId>
- <artifactId>commons-fileupload</artifactId>
- <version>1.4</version>
- </dependency>
复制代码- server:
- port: 8100
- spring:
- datasource:
- url: jdbc:mysql://localhost:3306/db03
- username: 你的用户名
- password: 你的密码
- driver-class-name: com.mysql.cj.jdbc.Driver
- type: com.alibaba.druid.pool.DruidDataSource
- mybatis:
- mapper-locations: mapper/*.xml
- type-aliases-package: com.lyt.work0721.entity
复制代码目录结构

上传文件工具类
- package com.lyt.util;
- import org.springframework.util.ObjectUtils;
- import org.springframework.web.multipart.MultipartFile;
- import java.io.File;
- import java.io.IOException;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- import java.util.UUID;
- /**
- * @author liuyutao
- * @date 2022/07/27
- */
- public class UploadUtil {
- //上传文件的路径前缀
- public static String uploadPathPrefix = "D:\\upload\\images\";
- public static String upload(MultipartFile uploadFile, String oldPath) {
- String uploadFullPath;//上传文件的完整路径
- String saveSqlPartFilePath;//返回该属性,保存到数据库部分文件路径
- if (ObjectUtils.isEmpty(oldPath)) {
- String originalFilename = uploadFile.getOriginalFilename();//上传文件原始文件名
- assert originalFilename != null;
- String fileType = originalFilename.substring(originalFilename.lastIndexOf("."));//文件类型
- Date date = new Date();
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy\\M\");
- String format = sdf.format(date);
- String uuid = UUID.randomUUID().toString().replace("-", "");
- String saveDiskFileName = uuid + fileType;// 保存到磁盘的文件名
- saveSqlPartFilePath = format + saveDiskFileName;
- uploadFullPath = uploadPathPrefix + format + saveDiskFileName;//上传文件的完整路径: D:\\upload\\images\\ yyyy\\M\\ uuid文件名
- } else {
- uploadFullPath = uploadPathPrefix + oldPath;
- saveSqlPartFilePath = oldPath;
- }
- File file = new File(uploadFullPath);
- try {
- if (!file.exists()) {
- file.mkdirs();
- }
- uploadFile.transferTo(file);
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- return saveSqlPartFilePath;
- }
- }
复制代码SpringBoot 虚拟路径映射
- @Configuration
- public class WebMvcConfig implements WebMvcConfigurer {
- @Override
- public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/upload/**").addResourceLocations("file:D:/upload/images/");
- }
- }
复制代码新增 + 上传文件
- @PostMapping("/addRna")
- public int uploadCard(@RequestParam("file") MultipartFile file, @RequestPart Rna rna) {
- String cardImg = UploadUtil.upload(file, null);
- rna.setCardImg(cardImg);
- return rnaService.insertSelective(rna);
- }
复制代码 思路:
- 文件 和 对象数据 同时访问一个接口
- 上传文件后返回文件的部分路径,非全路径
- 设置到rna对象,一同添加到数据库
编辑 + 上传文件
- @PostMapping("/updateRna")
- public int updateRna(@RequestParam("file") MultipartFile file, @RequestPart Rna rna) {
- if (!file.isEmpty()) {
- Rna rnaById = rnaService.selectByPrimaryKey(rna.getId());
- UploadUtil.upload(file, rnaById.getCardImg());
- }
- return rnaService.updateByPrimaryKeySelective(rna);
- }
复制代码
- 这里不是删除原来文件,而是同路径同文件名,覆盖原文件
- 有上传新文件,则覆盖原文件,编辑其他字段数据
- 没有上传文件,编辑其他字段数据
查询
- PageHelper 插件分页
- 拼接文件的完整url访问路径
删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |